aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-07-28 20:06:51 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-07-28 20:06:51 -0400
commitd94ba9e7d8d5c821d0442f13b30b0140c1109c38 (patch)
treedb82a38b7341fc035228d6cd1270cf4468c229c3
parent1c88e19b0f6a8471ee50d5062721ba30b8fd4ba9 (diff)
parent9573e7923007961799beff38bc5c5a7635634eef (diff)
Merge tag 'pinctrl-v4.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij: "This is the bulk of pin control changes for the v4.8 kernel cycle. Nothing stands out as especially exiting: new drivers, new subdrivers, lots of cleanups and incremental features. Business as usual. New drivers: - New driver for Oxnas pin control and GPIO. This ARM-based chipset is used in a few storage (NAS) type devices. - New driver for the MAX77620/MAX20024 pin controller portions. - New driver for the Intel Merrifield pin controller. New subdrivers: - New subdriver for the Qualcomm MDM9615 - New subdriver for the STM32F746 MCU - New subdriver for the Broadcom NSP SoC. Cleanups: - Demodularization of bool compiled-in drivers. Apart from this there is just regular incremental improvements to a lot of drivers, especially Uniphier and PFC" * tag 'pinctrl-v4.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (131 commits) pinctrl: fix pincontrol definition for marvell pinctrl: xway: fix typo Revert "pinctrl: amd: make it explicitly non-modular" pinctrl: iproc: Add NSP and Stingray GPIO support pinctrl: Update iProc GPIO DT bindings pinctrl: bcm: add OF dependencies pinctrl: ns2: remove redundant dev_err call in ns2_pinmux_probe() pinctrl: Add STM32F746 MCU support pinctrl: intel: Protect set wake flow by spin lock pinctrl: nsp: remove redundant dev_err call in nsp_pinmux_probe() pinctrl: uniphier: add Ethernet pin-mux settings sh-pfc: Use PTR_ERR_OR_ZERO() to simplify the code pinctrl: ns2: fix return value check in ns2_pinmux_probe() pinctrl: qcom: update DT bindings with ebi2 groups pinctrl: qcom: establish proper EBI2 pin groups pinctrl: imx21: Remove the MODULE_DEVICE_TABLE() macro Documentation: dt: Add new compatible to STM32 pinctrl driver bindings includes: dt-bindings: Add STM32F746 pinctrl DT bindings pinctrl: sunxi: fix nand0 function name for sun8i pinctrl: uniphier: remove pointless pin-mux settings for PH1-LD11 ...
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio_oxnas.txt47
-rw-r--r--Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt18
-rw-r--r--Documentation/devicetree/bindings/pinctrl/brcm,nsp-pinmux.txt79
-rw-r--r--Documentation/devicetree/bindings/pinctrl/oxnas,pinctrl.txt57
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-max77620.txt127
-rw-r--r--Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt152
-rw-r--r--Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt2
-rw-r--r--Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt5
-rw-r--r--Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt1
-rw-r--r--Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt2
-rw-r--r--Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.txt1
-rw-r--r--Documentation/pinctrl.txt24
-rw-r--r--drivers/pinctrl/Kconfig26
-rw-r--r--drivers/pinctrl/Makefile4
-rw-r--r--drivers/pinctrl/bcm/Kconfig15
-rw-r--r--drivers/pinctrl/bcm/Makefile1
-rw-r--r--drivers/pinctrl/bcm/pinctrl-iproc-gpio.c118
-rw-r--r--drivers/pinctrl/bcm/pinctrl-ns2-mux.c12
-rw-r--r--drivers/pinctrl/bcm/pinctrl-nsp-gpio.c6
-rw-r--r--drivers/pinctrl/bcm/pinctrl-nsp-mux.c642
-rw-r--r--drivers/pinctrl/core.c25
-rw-r--r--drivers/pinctrl/core.h2
-rw-r--r--drivers/pinctrl/devicetree.c7
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx.c29
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx1-core.c3
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx1.c9
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx21.c9
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx23.c17
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx25.c10
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx27.c10
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx28.c17
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx35.c10
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx50.c9
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx51.c10
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx53.c10
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx6dl.c14
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx6q.c10
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx6sl.c15
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx6sx.c14
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx6ul.c14
-rw-r--r--drivers/pinctrl/freescale/pinctrl-imx7d.c14
-rw-r--r--drivers/pinctrl/freescale/pinctrl-mxs.c12
-rw-r--r--drivers/pinctrl/freescale/pinctrl-mxs.h1
-rw-r--r--drivers/pinctrl/freescale/pinctrl-vf610.c10
-rw-r--r--drivers/pinctrl/intel/Kconfig11
-rw-r--r--drivers/pinctrl/intel/Makefile1
-rw-r--r--drivers/pinctrl/intel/pinctrl-baytrail.c25
-rw-r--r--drivers/pinctrl/intel/pinctrl-broxton.c43
-rw-r--r--drivers/pinctrl/intel/pinctrl-cherryview.c155
-rw-r--r--drivers/pinctrl/intel/pinctrl-intel.c52
-rw-r--r--drivers/pinctrl/intel/pinctrl-merrifield.c911
-rw-r--r--drivers/pinctrl/mediatek/pinctrl-mtk-common.c4
-rw-r--r--drivers/pinctrl/meson/pinctrl-meson-gxbb.c163
-rw-r--r--drivers/pinctrl/mvebu/pinctrl-kirkwood.c85
-rw-r--r--drivers/pinctrl/nomadik/pinctrl-nomadik.c96
-rw-r--r--drivers/pinctrl/pinconf-generic.c22
-rw-r--r--drivers/pinctrl/pinconf.c8
-rw-r--r--drivers/pinctrl/pinctrl-at91-pio4.c26
-rw-r--r--drivers/pinctrl/pinctrl-at91.c13
-rw-r--r--drivers/pinctrl/pinctrl-digicolor.c16
-rw-r--r--drivers/pinctrl/pinctrl-lpc18xx.c20
-rw-r--r--drivers/pinctrl/pinctrl-max77620.c673
-rw-r--r--drivers/pinctrl/pinctrl-oxnas.c846
-rw-r--r--drivers/pinctrl/pinctrl-rockchip.c4
-rw-r--r--drivers/pinctrl/pinctrl-st.c2
-rw-r--r--drivers/pinctrl/pinctrl-u300.c2
-rw-r--r--drivers/pinctrl/pinctrl-xway.c72
-rw-r--r--drivers/pinctrl/pinctrl-zynq.c13
-rw-r--r--drivers/pinctrl/pinmux.c16
-rw-r--r--drivers/pinctrl/qcom/Kconfig8
-rw-r--r--drivers/pinctrl/qcom/Makefile1
-rw-r--r--drivers/pinctrl/qcom/pinctrl-mdm9615.c483
-rw-r--r--drivers/pinctrl/qcom/pinctrl-msm.c6
-rw-r--r--drivers/pinctrl/qcom/pinctrl-msm8660.c114
-rw-r--r--drivers/pinctrl/qcom/pinctrl-msm8x74.c43
-rw-r--r--drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c1
-rw-r--r--drivers/pinctrl/samsung/pinctrl-exynos5440.c1
-rw-r--r--drivers/pinctrl/samsung/pinctrl-samsung.c1
-rw-r--r--drivers/pinctrl/sh-pfc/core.c10
-rw-r--r--drivers/pinctrl/sh-pfc/core.h58
-rw-r--r--drivers/pinctrl/sh-pfc/gpio.c13
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a73a4.c1
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a7740.c1
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a7778.c2
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a7790.c59
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a7791.c1
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a7795.c327
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-sh7757.c1
-rw-r--r--drivers/pinctrl/sh-pfc/pinctrl.c46
-rw-r--r--drivers/pinctrl/sh-pfc/sh_pfc.h55
-rw-r--r--drivers/pinctrl/sirf/pinctrl-atlas7.c4
-rw-r--r--drivers/pinctrl/stm32/Kconfig6
-rw-r--r--drivers/pinctrl/stm32/Makefile1
-rw-r--r--drivers/pinctrl/stm32/pinctrl-stm32.c31
-rw-r--r--drivers/pinctrl/stm32/pinctrl-stm32f746.c1681
-rw-r--r--drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c6
-rw-r--r--drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c6
-rw-r--r--drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c6
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra.c8
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra.h6
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra114.c4
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra124.c4
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra20.c6
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra210.c4
-rw-r--r--drivers/pinctrl/tegra/pinctrl-tegra30.c4
-rw-r--r--drivers/pinctrl/uniphier/Kconfig20
-rw-r--r--drivers/pinctrl/uniphier/Makefile2
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-core.c298
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c952
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c1050
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c494
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c609
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c819
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c653
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c603
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c455
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier.h59
-rw-r--r--include/dt-bindings/pinctrl/stm32f746-pinfunc.h1324
-rw-r--r--include/linux/pinctrl/pinconf-generic.h2
119 files changed, 12550 insertions, 2698 deletions
diff --git a/Documentation/devicetree/bindings/gpio/gpio_oxnas.txt b/Documentation/devicetree/bindings/gpio/gpio_oxnas.txt
new file mode 100644
index 000000000000..928ed4f43907
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio_oxnas.txt
@@ -0,0 +1,47 @@
1* Oxford Semiconductor OXNAS SoC GPIO Controller
2
3Please refer to gpio.txt for generic information regarding GPIO bindings.
4
5Required properties:
6 - compatible: "oxsemi,ox810se-gpio"
7 - reg: Base address and length for the device.
8 - interrupts: The port interrupt shared by all pins.
9 - gpio-controller: Marks the port as GPIO controller.
10 - #gpio-cells: Two. The first cell is the pin number and
11 the second cell is used to specify the gpio polarity as defined in
12 defined in <dt-bindings/gpio/gpio.h>:
13 0 = GPIO_ACTIVE_HIGH
14 1 = GPIO_ACTIVE_LOW
15 - interrupt-controller: Marks the device node as an interrupt controller.
16 - #interrupt-cells: Two. The first cell is the GPIO number and second cell
17 is used to specify the trigger type as defined in
18 <dt-bindings/interrupt-controller/irq.h>:
19 IRQ_TYPE_EDGE_RISING
20 IRQ_TYPE_EDGE_FALLING
21 IRQ_TYPE_EDGE_BOTH
22 - gpio-ranges: Interaction with the PINCTRL subsystem, it also specifies the
23 gpio base and count, should be in the format of numeric-gpio-range as
24 specified in the gpio.txt file.
25
26Example:
27
28gpio0: gpio@0 {
29 compatible = "oxsemi,ox810se-gpio";
30 reg = <0x000000 0x100000>;
31 interrupts = <21>;
32 #gpio-cells = <2>;
33 gpio-controller;
34 interrupt-controller;
35 #interrupt-cells = <2>;
36 gpio-ranges = <&pinctrl 0 0 32>;
37};
38
39keys {
40 ...
41
42 button-esc {
43 label = "ESC";
44 linux,code = <1>;
45 gpios = <&gpio0 12 0>;
46 };
47};
diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt b/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
index e4277921f3e3..a73cbeb0f309 100644
--- a/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
@@ -3,8 +3,22 @@ Broadcom iProc GPIO/PINCONF Controller
3Required properties: 3Required properties:
4 4
5- compatible: 5- compatible:
6 Must be "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", 6 "brcm,iproc-gpio" for the generic iProc based GPIO controller IP that
7 "brcm,cygnus-crmu-gpio" or "brcm,iproc-gpio" 7 supports full-featured pinctrl and GPIO functions used in various iProc
8 based SoCs
9
10 May contain an SoC-specific compatibility string to accommodate any
11 SoC-specific features
12
13 "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", or
14 "brcm,cygnus-crmu-gpio" for Cygnus SoCs
15
16 "brcm,iproc-nsp-gpio" for the iProc NSP SoC that has drive strength support
17 disabled
18
19 "brcm,iproc-stingray-gpio" for the iProc Stingray SoC that has the general
20 pinctrl support completely disabled in this IP block. In Stingray, a
21 different IP block is used to handle pinctrl related functions
8 22
9- reg: 23- reg:
10 Define the base and range of the I/O address space that contains SoC 24 Define the base and range of the I/O address space that contains SoC
diff --git a/Documentation/devicetree/bindings/pinctrl/brcm,nsp-pinmux.txt b/Documentation/devicetree/bindings/pinctrl/brcm,nsp-pinmux.txt
new file mode 100644
index 000000000000..603564e5fe6f
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/brcm,nsp-pinmux.txt
@@ -0,0 +1,79 @@
1Broadcom NSP (Northstar plus) IOMUX Controller
2
3The NSP IOMUX controller supports group based mux configuration. In
4addition, certain pins can be muxed to GPIO function individually.
5
6Required properties:
7- compatible:
8 Must be "brcm,nsp-pinmux"
9
10- reg:
11 Should contain the register physical address and length for each of
12 GPIO_CONTROL0, GP_AUX_SEL and IPROC_CONFIG IOMUX registers
13
14Properties in subnodes:
15- function:
16 The mux function to select
17
18- groups:
19 The list of groups to select with a given function
20
21For more details, refer to
22Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
23
24For example:
25
26 pinmux: pinmux@1803f1c0 {
27 compatible = "brcm,nsp-pinmux";
28 reg = <0x1803f1c0 0x04>,
29 <0x18030028 0x04>,
30 <0x1803f408 0x04>;
31
32 pinctrl-names = "default";
33 pinctrl-0 = <&pwm &gpio_b &nand_sel>;
34
35 pwm: pwm {
36 function = "pwm";
37 groups = "pwm0_grp", "pwm1_grp";
38 };
39
40 gpio_b: gpio_b {
41 function = "gpio_b";
42 groups = "gpio_b_0_grp", "gpio_b_1_grp";
43 };
44
45 nand_sel: nand_sel {
46 function = "nand";
47 groups = "nand_grp";
48 };
49 };
50
51List of supported functions and groups in Northstar Plus:
52
53"spi": "spi_grp"
54
55"i2c": "i2c_grp"
56
57"mdio": "mdio_grp"
58
59"pwm": "pwm0_grp", "pwm1_grp", "pwm2_grp", "pwm3_grp"
60
61"gpio_b": "gpio_b_0_grp", "gpio_b_1_grp", "gpio_b_2_grp", "gpio_b_3_grp"
62
63"uart1": "uart1_grp"
64
65"uart2": "uart2_grp"
66
67"synce": "synce_grp"
68
69"sata_led_grps": "sata0_led_grp", "sata1_led_grp"
70
71"xtal_out": "xtal_out_grp"
72
73"sdio": "sdio_pwr_grp", "sdio_1p8v_grp"
74
75"switch_led": "switch_p05_led0_grp", "switch_p05_led1_grp"
76
77"nand": "nand_grp"
78
79"emmc": "emmc_grp"
diff --git a/Documentation/devicetree/bindings/pinctrl/oxnas,pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/oxnas,pinctrl.txt
new file mode 100644
index 000000000000..d6074321f730
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/oxnas,pinctrl.txt
@@ -0,0 +1,57 @@
1* Oxford Semiconductor OXNAS SoC Family Pin Controller
2
3Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and
4../interrupt-controller/interrupts.txt for generic information regarding
5pin controller, GPIO, and interrupt bindings.
6
7OXNAS 'pin configuration node' is a node of a group of pins which can be
8used for a specific device or function. This node represents configurations of
9pins, optional function, and optional mux related configuration.
10
11Required properties for pin controller node:
12 - compatible: "oxsemi,ox810se-pinctrl"
13 - oxsemi,sys-ctrl: a phandle to the system controller syscon node
14
15Required properties for pin configuration sub-nodes:
16 - pins: List of pins to which the configuration applies.
17
18Optional properties for pin configuration sub-nodes:
19----------------------------------------------------
20 - function: Mux function for the specified pins.
21 - bias-pull-up: Enable weak pull-up.
22
23Example:
24
25pinctrl: pinctrl {
26 compatible = "oxsemi,ox810se-pinctrl";
27
28 /* Regmap for sys registers */
29 oxsemi,sys-ctrl = <&sys>;
30
31 pinctrl_uart2: pinctrl_uart2 {
32 uart2a {
33 pins = "gpio31";
34 function = "fct3";
35 };
36 uart2b {
37 pins = "gpio32";
38 function = "fct3";
39 };
40 };
41};
42
43uart2: serial@900000 {
44 compatible = "ns16550a";
45 reg = <0x900000 0x100000>;
46 clocks = <&sysclk>;
47 interrupts = <29>;
48 reg-shift = <0>;
49 fifo-size = <16>;
50 reg-io-width = <1>;
51 current-speed = <115200>;
52 no-loopback-test;
53 status = "disabled";
54 resets = <&reset 22>;
55 pinctrl-names = "default";
56 pinctrl-0 = <&pinctrl_uart2>;
57};
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-max77620.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-max77620.txt
new file mode 100644
index 000000000000..ad4fce3552bb
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-max77620.txt
@@ -0,0 +1,127 @@
1Pincontrol driver for MAX77620 Power management IC from Maxim Semiconductor.
2
3Device has 8 GPIO pins which can be configured as GPIO as well as the
4special IO functions.
5
6Please refer file <devicetree/bindings/pinctrl/pinctrl-bindings.txt>
7for details of the common pinctrl bindings used by client devices,
8including the meaning of the phrase "pin configuration node".
9
10Optional Pinmux properties:
11--------------------------
12Following properties are required if default setting of pins are required
13at boot.
14- pinctrl-names: A pinctrl state named per <pinctrl-binding.txt>.
15- pinctrl[0...n]: Properties to contain the phandle for pinctrl states per
16 <pinctrl-binding.txt>.
17
18The pin configurations are defined as child of the pinctrl states node. Each
19sub-node have following properties:
20
21Required properties:
22------------------
23- pins: List of pins. Valid values of pins properties are:
24 gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7.
25
26Optional properties:
27-------------------
28Following are optional properties defined as pinmux DT binding document
29<pinctrl-bindings.txt>. Absence of properties will leave the configuration
30on default.
31 function,
32 drive-push-pull,
33 drive-open-drain,
34 bias-pull-up,
35 bias-pull-down.
36
37Valid values for function properties are:
38 gpio, lpm-control-in, fps-out, 32k-out, sd0-dvs-in, sd1-dvs-in,
39 reference-out
40
41Theres is also customised properties for the GPIO1, GPIO2 and GPIO3. These
42customised properties are required to configure FPS configuration parameters
43of these GPIOs. Please refer <devicetree/bindings/mfd/max77620.txt> for more
44detail of Flexible Power Sequence (FPS).
45
46- maxim,active-fps-source: FPS source for the GPIOs to get
47 enabled/disabled when system is in
48 active state. Valid values are:
49 - MAX77620_FPS_SRC_0,
50 FPS source is FPS0.
51 - MAX77620_FPS_SRC_1,
52 FPS source is FPS1
53 - MAX77620_FPS_SRC_2 and
54 FPS source is FPS2
55 - MAX77620_FPS_SRC_NONE.
56 GPIO is not controlled
57 by FPS events and it gets
58 enabled/disabled by register
59 access.
60 Absence of this property will leave
61 the FPS configuration register for that
62 GPIO to default configuration.
63
64- maxim,active-fps-power-up-slot: Sequencing event slot number on which
65 the GPIO get enabled when
66 master FPS input event set to HIGH.
67 Valid values are 0 to 7.
68 This is applicable if FPS source is
69 selected as FPS0, FPS1 or FPS2.
70
71- maxim,active-fps-power-down-slot: Sequencing event slot number on which
72 the GPIO get disabled when master
73 FPS input event set to LOW.
74 Valid values are 0 to 7.
75 This is applicable if FPS source is
76 selected as FPS0, FPS1 or FPS2.
77
78- maxim,suspend-fps-source: This is same as property
79 "maxim,active-fps-source" but value
80 get configured when system enters in
81 to suspend state.
82
83- maxim,suspend-fps-power-up-slot: This is same as property
84 "maxim,active-fps-power-up-slot" but
85 this value get configured into FPS
86 configuration register when system
87 enters into suspend.
88 This is applicable if suspend state
89 FPS source is selected as FPS0, FPS1 or
90
91- maxim,suspend-fps-power-down-slot: This is same as property
92 "maxim,active-fps-power-down-slot" but
93 this value get configured into FPS
94 configuration register when system
95 enters into suspend.
96 This is applicable if suspend state
97 FPS source is selected as FPS0, FPS1 or
98 FPS2.
99
100Example:
101--------
102#include <dt-bindings/mfd/max77620.h>
103...
104max77620@3c {
105
106 pinctrl-names = "default";
107 pinctrl-0 = <&spmic_default>;
108
109 spmic_default: pinmux@0 {
110 pin_gpio0 {
111 pins = "gpio0";
112 function = "gpio";
113 };
114
115 pin_gpio1 {
116 pins = "gpio1";
117 function = "fps-out";
118 maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
119 };
120
121 pin_gpio2 {
122 pins = "gpio2";
123 function = "fps-out";
124 maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
125 };
126 };
127};
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt
new file mode 100644
index 000000000000..1b52f01ddcb7
--- /dev/null
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt
@@ -0,0 +1,152 @@
1Qualcomm MDM9615 TLMM block
2
3This binding describes the Top Level Mode Multiplexer block found in the
4MDM9615 platform.
5
6- compatible:
7 Usage: required
8 Value type: <string>
9 Definition: must be "qcom,mdm9615-pinctrl"
10
11- reg:
12 Usage: required
13 Value type: <prop-encoded-array>
14 Definition: the base address and size of the TLMM register space.
15
16- interrupts:
17 Usage: required
18 Value type: <prop-encoded-array>
19 Definition: should specify the TLMM summary IRQ.
20
21- interrupt-controller:
22 Usage: required
23 Value type: <none>
24 Definition: identifies this node as an interrupt controller
25
26- #interrupt-cells:
27 Usage: required
28 Value type: <u32>
29 Definition: must be 2. Specifying the pin number and flags, as defined
30 in <dt-bindings/interrupt-controller/irq.h>
31
32- gpio-controller:
33 Usage: required
34 Value type: <none>
35 Definition: identifies this node as a gpio controller
36
37- #gpio-cells:
38 Usage: required
39 Value type: <u32>
40 Definition: must be 2. Specifying the pin number and flags, as defined
41 in <dt-bindings/gpio/gpio.h>
42
43Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
44a general description of GPIO and interrupt bindings.
45
46Please refer to pinctrl-bindings.txt in this directory for details of the
47common pinctrl bindings used by client devices, including the meaning of the
48phrase "pin configuration node".
49
50The pin configuration nodes act as a container for an arbitrary number of
51subnodes. Each of these subnodes represents some desired configuration for a
52pin, a group, or a list of pins or groups. This configuration can include the
53mux function to select on those pin(s)/group(s), and various pin configuration
54parameters, such as pull-up, drive strength, etc.
55
56
57PIN CONFIGURATION NODES:
58
59The name of each subnode is not important; all subnodes should be enumerated
60and processed purely based on their content.
61
62Each subnode only affects those parameters that are explicitly listed. In
63other words, a subnode that lists a mux function but no pin configuration
64parameters implies no information about any pin configuration parameters.
65Similarly, a pin subnode that describes a pullup parameter implies no
66information about e.g. the mux function.
67
68
69The following generic properties as defined in pinctrl-bindings.txt are valid
70to specify in a pin configuration subnode:
71
72- pins:
73 Usage: required
74 Value type: <string-array>
75 Definition: List of gpio pins affected by the properties specified in
76 this subnode. Valid pins are:
77 gpio0-gpio87
78
79- function:
80 Usage: required
81 Value type: <string>
82 Definition: Specify the alternative function to be configured for the
83 specified pins.
84 Valid values are:
85 gpio, gsbi2_i2c, gsbi3, gsbi4, gsbi5_i2c, gsbi5_uart,
86 sdc2, ebi2_lcdc, ps_hold, prim_audio, sec_audio,
87 cdc_mclk
88
89- bias-disable:
90 Usage: optional
91 Value type: <none>
92 Definition: The specified pins should be configued as no pull.
93
94- bias-pull-down:
95 Usage: optional
96 Value type: <none>
97 Definition: The specified pins should be configued as pull down.
98
99- bias-pull-up:
100 Usage: optional
101 Value type: <none>
102 Definition: The specified pins should be configued as pull up.
103
104- output-high:
105 Usage: optional
106 Value type: <none>
107 Definition: The specified pins are configured in output mode, driven
108 high.
109
110- output-low:
111 Usage: optional
112 Value type: <none>
113 Definition: The specified pins are configured in output mode, driven
114 low.
115
116- drive-strength:
117 Usage: optional
118 Value type: <u32>
119 Definition: Selects the drive strength for the specified pins, in mA.
120 Valid values are: 2, 4, 6, 8, 10, 12, 14 and 16
121
122Example:
123
124 msmgpio: pinctrl@800000 {
125 compatible = "qcom,mdm9615-pinctrl";
126 reg = <0x800000 0x4000>;
127
128 gpio-controller;
129 #gpio-cells = <2>;
130 interrupt-controller;
131 #interrupt-cells = <2>;
132 interrupts = <0 16 0x4>;
133
134 gsbi8_uart: gsbi8-uart {
135 mux {
136 pins = "gpio34", "gpio35";
137 function = "gsbi8";
138 };
139
140 tx {
141 pins = "gpio34";
142 drive-strength = <4>;
143 bias-disable;
144 };
145
146 rx {
147 pins = "gpio35";
148 drive-strength = <2>;
149 bias-pull-up;
150 };
151 };
152 };
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt
index 77aa11790163..df9a838ec5f9 100644
--- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt
@@ -52,7 +52,7 @@ Valid values for function are:
52 gsbi2_spi_cs3_n, gsbi3, gsbi3_spi_cs1_n, gsbi3_spi_cs2_n, gsbi3_spi_cs3_n, 52 gsbi2_spi_cs3_n, gsbi3, gsbi3_spi_cs1_n, gsbi3_spi_cs2_n, gsbi3_spi_cs3_n,
53 gsbi4, gsbi5, gsbi6, gsbi7, gsbi8, gsbi9, gsbi10, gsbi11, gsbi12, hdmi, i2s, 53 gsbi4, gsbi5, gsbi6, gsbi7, gsbi8, gsbi9, gsbi10, gsbi11, gsbi12, hdmi, i2s,
54 lcdc, mdp_vsync, mi2s, pcm, ps_hold, sdc1, sdc2, sdc5, tsif1, tsif2, usb_fs1, 54 lcdc, mdp_vsync, mi2s, pcm, ps_hold, sdc1, sdc2, sdc5, tsif1, tsif2, usb_fs1,
55 usb_fs1_oe_n, usb_fs2, usb_fs2_oe_n, vfe, vsens_alarm, 55 usb_fs1_oe_n, usb_fs2, usb_fs2_oe_n, vfe, vsens_alarm, ebi2, ebi2cs
56 56
57Example: 57Example:
58 58
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
index e4d6a9d20f7d..453bd7c76d6b 100644
--- a/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
@@ -49,6 +49,9 @@ Valid values for pins are:
49 sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data 49 sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data
50 Supports bias and drive-strength 50 Supports bias and drive-strength
51 51
52 hsic_data, hsic_strobe
53 Supports only mux
54
52Valid values for function are: 55Valid values for function are:
53 cci_i2c0, cci_i2c1, uim1, uim2, uim_batt_alarm, 56 cci_i2c0, cci_i2c1, uim1, uim2, uim_batt_alarm,
54 blsp_uim1, blsp_uart1, blsp_i2c1, blsp_spi1, 57 blsp_uim1, blsp_uart1, blsp_i2c1, blsp_spi1,
@@ -70,7 +73,7 @@ Valid values for function are:
70 cam_mckl0, cam_mclk1, cam_mclk2, cam_mclk3, mdp_vsync, hdmi_cec, hdmi_ddc, 73 cam_mckl0, cam_mclk1, cam_mclk2, cam_mclk3, mdp_vsync, hdmi_cec, hdmi_ddc,
71 hdmi_hpd, edp_hpd, gp_pdm0, gp_pdm1, gp_pdm2, gp_pdm3, gp0_clk, gp1_clk, 74 hdmi_hpd, edp_hpd, gp_pdm0, gp_pdm1, gp_pdm2, gp_pdm3, gp0_clk, gp1_clk,
72 gp_mn, tsif1, tsif2, hsic, grfc, audio_ref_clk, qua_mi2s, pri_mi2s, spkr_mi2s, 75 gp_mn, tsif1, tsif2, hsic, grfc, audio_ref_clk, qua_mi2s, pri_mi2s, spkr_mi2s,
73 ter_mi2s, sec_mi2s, bt, fm, wlan, slimbus, gpio 76 ter_mi2s, sec_mi2s, bt, fm, wlan, slimbus, hsic_ctl, gpio
74 77
75 (Note that this is not yet the complete list of functions) 78 (Note that this is not yet the complete list of functions)
76 79
diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt b/Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt
index d74e631e10da..b484ba1af78c 100644
--- a/Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt
+++ b/Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt
@@ -9,6 +9,7 @@ of PMIC's from Qualcomm.
9 Definition: Should contain one of: 9 Definition: Should contain one of:
10 "qcom,pm8018-mpp", 10 "qcom,pm8018-mpp",
11 "qcom,pm8038-mpp", 11 "qcom,pm8038-mpp",
12 "qcom,pm8058-mpp",
12 "qcom,pm8821-mpp", 13 "qcom,pm8821-mpp",
13 "qcom,pm8841-mpp", 14 "qcom,pm8841-mpp",
14 "qcom,pm8916-mpp", 15 "qcom,pm8916-mpp",
diff --git a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
index 74e6ec0339d6..e4cf022c992e 100644
--- a/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
@@ -72,7 +72,7 @@ Pin Configuration Node Properties:
72 72
73The pin configuration parameters use the generic pinconf bindings defined in 73The pin configuration parameters use the generic pinconf bindings defined in
74pinctrl-bindings.txt in this directory. The supported parameters are 74pinctrl-bindings.txt in this directory. The supported parameters are
75bias-disable, bias-pull-up, bias-pull-down, drive strength and power-source. For 75bias-disable, bias-pull-up, bias-pull-down, drive-strength and power-source. For
76pins that have a configurable I/O voltage, the power-source value should be the 76pins that have a configurable I/O voltage, the power-source value should be the
77nominal I/O voltage in millivolts. 77nominal I/O voltage in millivolts.
78 78
diff --git a/Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.txt
index 7b4800cc251e..587bffb9cbc6 100644
--- a/Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.txt
@@ -9,6 +9,7 @@ Pin controller node:
9Required properies: 9Required properies:
10 - compatible: value should be one of the following: 10 - compatible: value should be one of the following:
11 (a) "st,stm32f429-pinctrl" 11 (a) "st,stm32f429-pinctrl"
12 (b) "st,stm32f746-pinctrl"
12 - #address-cells: The value of this property must be 1 13 - #address-cells: The value of this property must be 1
13 - #size-cells : The value of this property must be 1 14 - #size-cells : The value of this property must be 1
14 - ranges : defines mapping between pin controller node (parent) to 15 - ranges : defines mapping between pin controller node (parent) to
diff --git a/Documentation/pinctrl.txt b/Documentation/pinctrl.txt
index 4976389e432d..0d3b9ce0a0b9 100644
--- a/Documentation/pinctrl.txt
+++ b/Documentation/pinctrl.txt
@@ -286,13 +286,13 @@ see the section named "pin control requests from drivers" and
286"drivers needing both pin control and GPIOs" below for details. But in some 286"drivers needing both pin control and GPIOs" below for details. But in some
287situations a cross-subsystem mapping between pins and GPIOs is needed. 287situations a cross-subsystem mapping between pins and GPIOs is needed.
288 288
289Since the pin controller subsystem have its pinspace local to the pin 289Since the pin controller subsystem has its pinspace local to the pin controller
290controller we need a mapping so that the pin control subsystem can figure out 290we need a mapping so that the pin control subsystem can figure out which pin
291which pin controller handles control of a certain GPIO pin. Since a single 291controller handles control of a certain GPIO pin. Since a single pin controller
292pin controller may be muxing several GPIO ranges (typically SoCs that have 292may be muxing several GPIO ranges (typically SoCs that have one set of pins,
293one set of pins, but internally several GPIO silicon blocks, each modelled as 293but internally several GPIO silicon blocks, each modelled as a struct
294a struct gpio_chip) any number of GPIO ranges can be added to a pin controller 294gpio_chip) any number of GPIO ranges can be added to a pin controller instance
295instance like this: 295like this:
296 296
297struct gpio_chip chip_a; 297struct gpio_chip chip_a;
298struct gpio_chip chip_b; 298struct gpio_chip chip_b;
@@ -493,12 +493,12 @@ Definitions:
493- The combination of a FUNCTION and a PIN GROUP determine a certain function 493- The combination of a FUNCTION and a PIN GROUP determine a certain function
494 for a certain set of pins. The knowledge of the functions and pin groups 494 for a certain set of pins. The knowledge of the functions and pin groups
495 and their machine-specific particulars are kept inside the pinmux driver, 495 and their machine-specific particulars are kept inside the pinmux driver,
496 from the outside only the enumerators are known, and the driver core can: 496 from the outside only the enumerators are known, and the driver core can
497 request:
497 498
498 - Request the name of a function with a certain selector (>= 0) 499 - The name of a function with a certain selector (>= 0)
499 - A list of groups associated with a certain function 500 - A list of groups associated with a certain function
500 - Request that a certain group in that list to be activated for a certain 501 - That a certain group in that list to be activated for a certain function
501 function
502 502
503 As already described above, pin groups are in turn self-descriptive, so 503 As already described above, pin groups are in turn self-descriptive, so
504 the core will retrieve the actual pin range in a certain group from the 504 the core will retrieve the actual pin range in a certain group from the
@@ -831,7 +831,7 @@ separate memory range only intended for GPIO driving, and the register
831range dealing with pin config and pin multiplexing get placed into a 831range dealing with pin config and pin multiplexing get placed into a
832different memory range and a separate section of the data sheet. 832different memory range and a separate section of the data sheet.
833 833
834A flag "strict" in struct pinctrl_desc is available to check and deny 834A flag "strict" in struct pinmux_ops is available to check and deny
835simultaneous access to the same pin from GPIO and pin multiplexing 835simultaneous access to the same pin from GPIO and pin multiplexing
836consumers on hardware of this type. The pinctrl driver should set this flag 836consumers on hardware of this type. The pinctrl driver should set this flag
837accordingly. 837accordingly.
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index fb8200b8e8ec..b3fe1d339632 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -35,7 +35,7 @@ config PINCTRL_ADI2
35 machine and arch are selected to build. 35 machine and arch are selected to build.
36 36
37config PINCTRL_AS3722 37config PINCTRL_AS3722
38 bool "Pinctrl and GPIO driver for ams AS3722 PMIC" 38 tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
39 depends on MFD_AS3722 && GPIOLIB 39 depends on MFD_AS3722 && GPIOLIB
40 select PINMUX 40 select PINMUX
41 select GENERIC_PINCONF 41 select GENERIC_PINCONF
@@ -129,6 +129,17 @@ config PINCTRL_MESON
129 select OF_GPIO 129 select OF_GPIO
130 select REGMAP_MMIO 130 select REGMAP_MMIO
131 131
132config PINCTRL_OXNAS
133 bool
134 depends on OF
135 select PINMUX
136 select PINCONF
137 select GENERIC_PINCONF
138 select GPIOLIB
139 select OF_GPIO
140 select GPIOLIB_IRQCHIP
141 select MFD_SYSCON
142
132config PINCTRL_ROCKCHIP 143config PINCTRL_ROCKCHIP
133 bool 144 bool
134 select PINMUX 145 select PINMUX
@@ -196,8 +207,19 @@ config PINCTRL_COH901
196 COH 901 335 and COH 901 571/3. They contain 3, 5 or 7 207 COH 901 335 and COH 901 571/3. They contain 3, 5 or 7
197 ports of 8 GPIO pins each. 208 ports of 8 GPIO pins each.
198 209
210config PINCTRL_MAX77620
211 tristate "MAX77620/MAX20024 Pincontrol support"
212 depends on MFD_MAX77620
213 select PINMUX
214 select GENERIC_PINCONF
215 help
216 Say Yes here to enable Pin control support for Maxim PMIC MAX77620.
217 This PMIC has 8 GPIO pins that work as GPIO as well as special
218 function in alternate mode. This driver also configure push-pull,
219 open drain, FPS slots etc.
220
199config PINCTRL_PALMAS 221config PINCTRL_PALMAS
200 bool "Pinctrl driver for the PALMAS Series MFD devices" 222 tristate "Pinctrl driver for the PALMAS Series MFD devices"
201 depends on OF && MFD_PALMAS 223 depends on OF && MFD_PALMAS
202 select PINMUX 224 select PINMUX
203 select GENERIC_PINCONF 225 select GENERIC_PINCONF
diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile
index 42a5c1dddfef..8ebd7b8e1621 100644
--- a/drivers/pinctrl/Makefile
+++ b/drivers/pinctrl/Makefile
@@ -16,7 +16,9 @@ obj-$(CONFIG_PINCTRL_AT91PIO4) += pinctrl-at91-pio4.o
16obj-$(CONFIG_PINCTRL_AMD) += pinctrl-amd.o 16obj-$(CONFIG_PINCTRL_AMD) += pinctrl-amd.o
17obj-$(CONFIG_PINCTRL_DIGICOLOR) += pinctrl-digicolor.o 17obj-$(CONFIG_PINCTRL_DIGICOLOR) += pinctrl-digicolor.o
18obj-$(CONFIG_PINCTRL_FALCON) += pinctrl-falcon.o 18obj-$(CONFIG_PINCTRL_FALCON) += pinctrl-falcon.o
19obj-$(CONFIG_PINCTRL_MAX77620) += pinctrl-max77620.o
19obj-$(CONFIG_PINCTRL_MESON) += meson/ 20obj-$(CONFIG_PINCTRL_MESON) += meson/
21obj-$(CONFIG_PINCTRL_OXNAS) += pinctrl-oxnas.o
20obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o 22obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o
21obj-$(CONFIG_PINCTRL_PIC32) += pinctrl-pic32.o 23obj-$(CONFIG_PINCTRL_PIC32) += pinctrl-pic32.o
22obj-$(CONFIG_PINCTRL_PISTACHIO) += pinctrl-pistachio.o 24obj-$(CONFIG_PINCTRL_PISTACHIO) += pinctrl-pistachio.o
@@ -35,7 +37,7 @@ obj-$(CONFIG_PINCTRL_TB10X) += pinctrl-tb10x.o
35obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o 37obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o
36obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o 38obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o
37 39
38obj-$(CONFIG_ARCH_BCM) += bcm/ 40obj-y += bcm/
39obj-$(CONFIG_PINCTRL_BERLIN) += berlin/ 41obj-$(CONFIG_PINCTRL_BERLIN) += berlin/
40obj-y += freescale/ 42obj-y += freescale/
41obj-$(CONFIG_X86) += intel/ 43obj-$(CONFIG_X86) += intel/
diff --git a/drivers/pinctrl/bcm/Kconfig b/drivers/pinctrl/bcm/Kconfig
index c356223e1c9c..63246770bd74 100644
--- a/drivers/pinctrl/bcm/Kconfig
+++ b/drivers/pinctrl/bcm/Kconfig
@@ -60,6 +60,7 @@ config PINCTRL_IPROC_GPIO
60config PINCTRL_CYGNUS_MUX 60config PINCTRL_CYGNUS_MUX
61 bool "Broadcom Cygnus IOMUX driver" 61 bool "Broadcom Cygnus IOMUX driver"
62 depends on (ARCH_BCM_CYGNUS || COMPILE_TEST) 62 depends on (ARCH_BCM_CYGNUS || COMPILE_TEST)
63 depends on OF
63 select PINMUX 64 select PINMUX
64 select GENERIC_PINCONF 65 select GENERIC_PINCONF
65 default ARCH_BCM_CYGNUS 66 default ARCH_BCM_CYGNUS
@@ -99,3 +100,17 @@ config PINCTRL_NS2_MUX
99 100
100 The Broadcom Northstar2 IOMUX driver supports group based IOMUX 101 The Broadcom Northstar2 IOMUX driver supports group based IOMUX
101 configuration. 102 configuration.
103
104config PINCTRL_NSP_MUX
105 bool "Broadcom NSP IOMUX driver"
106 depends on (ARCH_BCM_NSP || COMPILE_TEST)
107 depends on OF
108 select PINMUX
109 select GENERIC_PINCONF
110 default ARCH_BCM_NSP
111 help
112 Say yes here to enable the Broadcom NSP SOC IOMUX driver.
113
114 The Broadcom Northstar Plus IOMUX driver supports pin based IOMUX
115 configuration, with certain individual pins can be overridden
116 to GPIO function.
diff --git a/drivers/pinctrl/bcm/Makefile b/drivers/pinctrl/bcm/Makefile
index 3861a1c1f8ff..2a65111f3c70 100644
--- a/drivers/pinctrl/bcm/Makefile
+++ b/drivers/pinctrl/bcm/Makefile
@@ -6,3 +6,4 @@ obj-$(CONFIG_PINCTRL_IPROC_GPIO) += pinctrl-iproc-gpio.o
6obj-$(CONFIG_PINCTRL_CYGNUS_MUX) += pinctrl-cygnus-mux.o 6obj-$(CONFIG_PINCTRL_CYGNUS_MUX) += pinctrl-cygnus-mux.o
7obj-$(CONFIG_PINCTRL_NSP_GPIO) += pinctrl-nsp-gpio.o 7obj-$(CONFIG_PINCTRL_NSP_GPIO) += pinctrl-nsp-gpio.o
8obj-$(CONFIG_PINCTRL_NS2_MUX) += pinctrl-ns2-mux.o 8obj-$(CONFIG_PINCTRL_NS2_MUX) += pinctrl-ns2-mux.o
9obj-$(CONFIG_PINCTRL_NSP_MUX) += pinctrl-nsp-mux.o
diff --git a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
index 3670f5ea7a12..7f7700716398 100644
--- a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
@@ -66,6 +66,14 @@
66#define GPIO_DRV_STRENGTH_BITS 3 66#define GPIO_DRV_STRENGTH_BITS 3
67#define GPIO_DRV_STRENGTH_BIT_MASK ((1 << GPIO_DRV_STRENGTH_BITS) - 1) 67#define GPIO_DRV_STRENGTH_BIT_MASK ((1 << GPIO_DRV_STRENGTH_BITS) - 1)
68 68
69enum iproc_pinconf_param {
70 IPROC_PINCONF_DRIVE_STRENGTH = 0,
71 IPROC_PINCONF_BIAS_DISABLE,
72 IPROC_PINCONF_BIAS_PULL_UP,
73 IPROC_PINCONF_BIAS_PULL_DOWN,
74 IPROC_PINCON_MAX,
75};
76
69/* 77/*
70 * Iproc GPIO core 78 * Iproc GPIO core
71 * 79 *
@@ -78,6 +86,10 @@
78 * @num_banks: number of GPIO banks, each bank supports up to 32 GPIOs 86 * @num_banks: number of GPIO banks, each bank supports up to 32 GPIOs
79 * @pinmux_is_supported: flag to indicate this GPIO controller contains pins 87 * @pinmux_is_supported: flag to indicate this GPIO controller contains pins
80 * that can be individually muxed to GPIO 88 * that can be individually muxed to GPIO
89 * @pinconf_disable: contains a list of PINCONF parameters that need to be
90 * disabled
91 * @nr_pinconf_disable: total number of PINCONF parameters that need to be
92 * disabled
81 * @pctl: pointer to pinctrl_dev 93 * @pctl: pointer to pinctrl_dev
82 * @pctldesc: pinctrl descriptor 94 * @pctldesc: pinctrl descriptor
83 */ 95 */
@@ -94,6 +106,9 @@ struct iproc_gpio {
94 106
95 bool pinmux_is_supported; 107 bool pinmux_is_supported;
96 108
109 enum pin_config_param *pinconf_disable;
110 unsigned int nr_pinconf_disable;
111
97 struct pinctrl_dev *pctl; 112 struct pinctrl_dev *pctl;
98 struct pinctrl_desc pctldesc; 113 struct pinctrl_desc pctldesc;
99}; 114};
@@ -360,6 +375,65 @@ static int iproc_gpio_get(struct gpio_chip *gc, unsigned gpio)
360 return !!(readl(chip->base + offset) & BIT(shift)); 375 return !!(readl(chip->base + offset) & BIT(shift));
361} 376}
362 377
378/*
379 * Mapping of the iProc PINCONF parameters to the generic pin configuration
380 * parameters
381 */
382static const enum pin_config_param iproc_pinconf_disable_map[] = {
383 [IPROC_PINCONF_DRIVE_STRENGTH] = PIN_CONFIG_DRIVE_STRENGTH,
384 [IPROC_PINCONF_BIAS_DISABLE] = PIN_CONFIG_BIAS_DISABLE,
385 [IPROC_PINCONF_BIAS_PULL_UP] = PIN_CONFIG_BIAS_PULL_UP,
386 [IPROC_PINCONF_BIAS_PULL_DOWN] = PIN_CONFIG_BIAS_PULL_DOWN,
387};
388
389static bool iproc_pinconf_param_is_disabled(struct iproc_gpio *chip,
390 enum pin_config_param param)
391{
392 unsigned int i;
393
394 if (!chip->nr_pinconf_disable)
395 return false;
396
397 for (i = 0; i < chip->nr_pinconf_disable; i++)
398 if (chip->pinconf_disable[i] == param)
399 return true;
400
401 return false;
402}
403
404static int iproc_pinconf_disable_map_create(struct iproc_gpio *chip,
405 unsigned long disable_mask)
406{
407 unsigned int map_size = ARRAY_SIZE(iproc_pinconf_disable_map);
408 unsigned int bit, nbits = 0;
409
410 /* figure out total number of PINCONF parameters to disable */
411 for_each_set_bit(bit, &disable_mask, map_size)
412 nbits++;
413
414 if (!nbits)
415 return 0;
416
417 /*
418 * Allocate an array to store PINCONF parameters that need to be
419 * disabled
420 */
421 chip->pinconf_disable = devm_kcalloc(chip->dev, nbits,
422 sizeof(*chip->pinconf_disable),
423 GFP_KERNEL);
424 if (!chip->pinconf_disable)
425 return -ENOMEM;
426
427 chip->nr_pinconf_disable = nbits;
428
429 /* now store these parameters */
430 nbits = 0;
431 for_each_set_bit(bit, &disable_mask, map_size)
432 chip->pinconf_disable[nbits++] = iproc_pinconf_disable_map[bit];
433
434 return 0;
435}
436
363static int iproc_get_groups_count(struct pinctrl_dev *pctldev) 437static int iproc_get_groups_count(struct pinctrl_dev *pctldev)
364{ 438{
365 return 1; 439 return 1;
@@ -500,6 +574,9 @@ static int iproc_pin_config_get(struct pinctrl_dev *pctldev, unsigned pin,
500 bool disable, pull_up; 574 bool disable, pull_up;
501 int ret; 575 int ret;
502 576
577 if (iproc_pinconf_param_is_disabled(chip, param))
578 return -ENOTSUPP;
579
503 switch (param) { 580 switch (param) {
504 case PIN_CONFIG_BIAS_DISABLE: 581 case PIN_CONFIG_BIAS_DISABLE:
505 iproc_gpio_get_pull(chip, gpio, &disable, &pull_up); 582 iproc_gpio_get_pull(chip, gpio, &disable, &pull_up);
@@ -548,6 +625,10 @@ static int iproc_pin_config_set(struct pinctrl_dev *pctldev, unsigned pin,
548 625
549 for (i = 0; i < num_configs; i++) { 626 for (i = 0; i < num_configs; i++) {
550 param = pinconf_to_config_param(configs[i]); 627 param = pinconf_to_config_param(configs[i]);
628
629 if (iproc_pinconf_param_is_disabled(chip, param))
630 return -ENOTSUPP;
631
551 arg = pinconf_to_config_argument(configs[i]); 632 arg = pinconf_to_config_argument(configs[i]);
552 633
553 switch (param) { 634 switch (param) {
@@ -633,11 +714,13 @@ static int iproc_gpio_register_pinconf(struct iproc_gpio *chip)
633} 714}
634 715
635static const struct of_device_id iproc_gpio_of_match[] = { 716static const struct of_device_id iproc_gpio_of_match[] = {
717 { .compatible = "brcm,iproc-gpio" },
636 { .compatible = "brcm,cygnus-ccm-gpio" }, 718 { .compatible = "brcm,cygnus-ccm-gpio" },
637 { .compatible = "brcm,cygnus-asiu-gpio" }, 719 { .compatible = "brcm,cygnus-asiu-gpio" },
638 { .compatible = "brcm,cygnus-crmu-gpio" }, 720 { .compatible = "brcm,cygnus-crmu-gpio" },
639 { .compatible = "brcm,iproc-gpio" }, 721 { .compatible = "brcm,iproc-nsp-gpio" },
640 { } 722 { .compatible = "brcm,iproc-stingray-gpio" },
723 { /* sentinel */ }
641}; 724};
642 725
643static int iproc_gpio_probe(struct platform_device *pdev) 726static int iproc_gpio_probe(struct platform_device *pdev)
@@ -646,8 +729,17 @@ static int iproc_gpio_probe(struct platform_device *pdev)
646 struct resource *res; 729 struct resource *res;
647 struct iproc_gpio *chip; 730 struct iproc_gpio *chip;
648 struct gpio_chip *gc; 731 struct gpio_chip *gc;
649 u32 ngpios; 732 u32 ngpios, pinconf_disable_mask = 0;
650 int irq, ret; 733 int irq, ret;
734 bool no_pinconf = false;
735
736 /* NSP does not support drive strength config */
737 if (of_device_is_compatible(dev->of_node, "brcm,iproc-nsp-gpio"))
738 pinconf_disable_mask = BIT(IPROC_PINCONF_DRIVE_STRENGTH);
739 /* Stingray does not support pinconf in this controller */
740 else if (of_device_is_compatible(dev->of_node,
741 "brcm,iproc-stingray-gpio"))
742 no_pinconf = true;
651 743
652 chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); 744 chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
653 if (!chip) 745 if (!chip)
@@ -702,10 +794,22 @@ static int iproc_gpio_probe(struct platform_device *pdev)
702 return ret; 794 return ret;
703 } 795 }
704 796
705 ret = iproc_gpio_register_pinconf(chip); 797 if (!no_pinconf) {
706 if (ret) { 798 ret = iproc_gpio_register_pinconf(chip);
707 dev_err(dev, "unable to register pinconf\n"); 799 if (ret) {
708 goto err_rm_gpiochip; 800 dev_err(dev, "unable to register pinconf\n");
801 goto err_rm_gpiochip;
802 }
803
804 if (pinconf_disable_mask) {
805 ret = iproc_pinconf_disable_map_create(chip,
806 pinconf_disable_mask);
807 if (ret) {
808 dev_err(dev,
809 "unable to create pinconf disable map\n");
810 goto err_rm_gpiochip;
811 }
812 }
709 } 813 }
710 814
711 /* optional GPIO interrupt support */ 815 /* optional GPIO interrupt support */
diff --git a/drivers/pinctrl/bcm/pinctrl-ns2-mux.c b/drivers/pinctrl/bcm/pinctrl-ns2-mux.c
index 3fefd14acc3e..ca817896ed24 100644
--- a/drivers/pinctrl/bcm/pinctrl-ns2-mux.c
+++ b/drivers/pinctrl/bcm/pinctrl-ns2-mux.c
@@ -1044,10 +1044,8 @@ static int ns2_pinmux_probe(struct platform_device *pdev)
1044 1044
1045 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1045 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1046 pinctrl->base0 = devm_ioremap_resource(&pdev->dev, res); 1046 pinctrl->base0 = devm_ioremap_resource(&pdev->dev, res);
1047 if (IS_ERR(pinctrl->base0)) { 1047 if (IS_ERR(pinctrl->base0))
1048 dev_err(&pdev->dev, "unable to map I/O space\n");
1049 return PTR_ERR(pinctrl->base0); 1048 return PTR_ERR(pinctrl->base0);
1050 }
1051 1049
1052 res = platform_get_resource(pdev, IORESOURCE_MEM, 1); 1050 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
1053 pinctrl->base1 = devm_ioremap_nocache(&pdev->dev, res->start, 1051 pinctrl->base1 = devm_ioremap_nocache(&pdev->dev, res->start,
@@ -1059,10 +1057,8 @@ static int ns2_pinmux_probe(struct platform_device *pdev)
1059 1057
1060 res = platform_get_resource(pdev, IORESOURCE_MEM, 2); 1058 res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
1061 pinctrl->pinconf_base = devm_ioremap_resource(&pdev->dev, res); 1059 pinctrl->pinconf_base = devm_ioremap_resource(&pdev->dev, res);
1062 if (IS_ERR(pinctrl->pinconf_base)) { 1060 if (IS_ERR(pinctrl->pinconf_base))
1063 dev_err(&pdev->dev, "unable to map I/O space\n");
1064 return PTR_ERR(pinctrl->pinconf_base); 1061 return PTR_ERR(pinctrl->pinconf_base);
1065 }
1066 1062
1067 ret = ns2_mux_log_init(pinctrl); 1063 ret = ns2_mux_log_init(pinctrl);
1068 if (ret) { 1064 if (ret) {
@@ -1089,9 +1085,9 @@ static int ns2_pinmux_probe(struct platform_device *pdev)
1089 1085
1090 pinctrl->pctl = pinctrl_register(&ns2_pinctrl_desc, &pdev->dev, 1086 pinctrl->pctl = pinctrl_register(&ns2_pinctrl_desc, &pdev->dev,
1091 pinctrl); 1087 pinctrl);
1092 if (!pinctrl->pctl) { 1088 if (IS_ERR(pinctrl->pctl)) {
1093 dev_err(&pdev->dev, "unable to register IOMUX pinctrl\n"); 1089 dev_err(&pdev->dev, "unable to register IOMUX pinctrl\n");
1094 return -EINVAL; 1090 return PTR_ERR(pinctrl->pctl);
1095 } 1091 }
1096 1092
1097 return 0; 1093 return 0;
diff --git a/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c b/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
index a8b37a9a8230..35783db1c10b 100644
--- a/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
@@ -458,13 +458,15 @@ static int nsp_gpio_get_strength(struct nsp_gpio *chip, unsigned gpio,
458 return 0; 458 return 0;
459} 459}
460 460
461int nsp_pin_config_group_get(struct pinctrl_dev *pctldev, unsigned selector, 461static int nsp_pin_config_group_get(struct pinctrl_dev *pctldev,
462 unsigned selector,
462 unsigned long *config) 463 unsigned long *config)
463{ 464{
464 return 0; 465 return 0;
465} 466}
466 467
467int nsp_pin_config_group_set(struct pinctrl_dev *pctldev, unsigned selector, 468static int nsp_pin_config_group_set(struct pinctrl_dev *pctldev,
469 unsigned selector,
468 unsigned long *configs, unsigned num_configs) 470 unsigned long *configs, unsigned num_configs)
469{ 471{
470 return 0; 472 return 0;
diff --git a/drivers/pinctrl/bcm/pinctrl-nsp-mux.c b/drivers/pinctrl/bcm/pinctrl-nsp-mux.c
new file mode 100644
index 000000000000..4149db309c8b
--- /dev/null
+++ b/drivers/pinctrl/bcm/pinctrl-nsp-mux.c
@@ -0,0 +1,642 @@
1/* Copyright (C) 2015 Broadcom Corporation
2 *
3 * This program is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU General Public License as
5 * published by the Free Software Foundation version 2.
6 *
7 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
8 * kind, whether express or implied; without even the implied warranty
9 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 * This file contains the Northstar plus (NSP) IOMUX driver that supports
13 * group based PINMUX configuration. The Northstar plus IOMUX controller
14 * allows pins to be individually muxed to GPIO function. The NAND and MMC is
15 * a group based selection. The gpio_a 8 - 11 are muxed with gpio_b and pwm.
16 * To select PWM, one need to enable the corresponding gpio_b as well.
17 *
18 * gpio_a (8 - 11)
19 * +----------
20 * |
21 * gpio_a (8-11) | gpio_b (0 - 3)
22 * ------------------------+-------+----------
23 * |
24 * | pwm (0 - 3)
25 * +----------
26 */
27
28#include <linux/err.h>
29#include <linux/io.h>
30#include <linux/of.h>
31#include <linux/pinctrl/pinconf.h>
32#include <linux/pinctrl/pinconf-generic.h>
33#include <linux/pinctrl/pinctrl.h>
34#include <linux/pinctrl/pinmux.h>
35#include <linux/platform_device.h>
36#include <linux/slab.h>
37
38#include "../core.h"
39#include "../pinctrl-utils.h"
40
41#define NSP_MUX_BASE0 0x00
42#define NSP_MUX_BASE1 0x01
43#define NSP_MUX_BASE2 0x02
44/*
45 * nsp IOMUX register description
46 *
47 * @base: base 0 or base 1
48 * @shift: bit shift for mux configuration of a group
49 * @mask: bit mask of the function
50 * @alt: alternate function to set to
51 */
52struct nsp_mux {
53 unsigned int base;
54 unsigned int shift;
55 unsigned int mask;
56 unsigned int alt;
57};
58
59/*
60 * Keep track of nsp IOMUX configuration and prevent double configuration
61 *
62 * @nsp_mux: nsp IOMUX register description
63 * @is_configured: flag to indicate whether a mux setting has already been
64 * configured
65 */
66struct nsp_mux_log {
67 struct nsp_mux mux;
68 bool is_configured;
69};
70
71/*
72 * Group based IOMUX configuration
73 *
74 * @name: name of the group
75 * @pins: array of pins used by this group
76 * @num_pins: total number of pins used by this group
77 * @mux: nsp group based IOMUX configuration
78 */
79struct nsp_pin_group {
80 const char *name;
81 const unsigned int *pins;
82 const unsigned int num_pins;
83 const struct nsp_mux mux;
84};
85
86/*
87 * nsp mux function and supported pin groups
88 *
89 * @name: name of the function
90 * @groups: array of groups that can be supported by this function
91 * @num_groups: total number of groups that can be supported by this function
92 */
93struct nsp_pin_function {
94 const char *name;
95 const char * const *groups;
96 const unsigned int num_groups;
97};
98
99/*
100 * nsp IOMUX pinctrl core
101 *
102 * @pctl: pointer to pinctrl_dev
103 * @dev: pointer to device
104 * @base0: first mux register
105 * @base1: second mux register
106 * @base2: third mux register
107 * @groups: pointer to array of groups
108 * @num_groups: total number of groups
109 * @functions: pointer to array of functions
110 * @num_functions: total number of functions
111 * @mux_log: pointer to the array of mux logs
112 * @lock: lock to protect register access
113 */
114struct nsp_pinctrl {
115 struct pinctrl_dev *pctl;
116 struct device *dev;
117 void __iomem *base0;
118 void __iomem *base1;
119 void __iomem *base2;
120 const struct nsp_pin_group *groups;
121 unsigned int num_groups;
122 const struct nsp_pin_function *functions;
123 unsigned int num_functions;
124 struct nsp_mux_log *mux_log;
125 spinlock_t lock;
126};
127
128/*
129 * Description of a pin in nsp
130 *
131 * @pin: pin number
132 * @name: pin name
133 * @gpio_select: reg data to select GPIO
134 */
135struct nsp_pin {
136 unsigned int pin;
137 char *name;
138 unsigned int gpio_select;
139};
140
141#define NSP_PIN_DESC(p, n, g) \
142{ \
143 .pin = p, \
144 .name = n, \
145 .gpio_select = g, \
146}
147
148/*
149 * List of muxable pins in nsp
150 */
151static struct nsp_pin nsp_pins[] = {
152 NSP_PIN_DESC(0, "spi_clk", 1),
153 NSP_PIN_DESC(1, "spi_ss", 1),
154 NSP_PIN_DESC(2, "spi_mosi", 1),
155 NSP_PIN_DESC(3, "spi_miso", 1),
156 NSP_PIN_DESC(4, "scl", 1),
157 NSP_PIN_DESC(5, "sda", 1),
158 NSP_PIN_DESC(6, "mdc", 1),
159 NSP_PIN_DESC(7, "mdio", 1),
160 NSP_PIN_DESC(8, "pwm0", 1),
161 NSP_PIN_DESC(9, "pwm1", 1),
162 NSP_PIN_DESC(10, "pwm2", 1),
163 NSP_PIN_DESC(11, "pwm3", 1),
164 NSP_PIN_DESC(12, "uart1_rx", 1),
165 NSP_PIN_DESC(13, "uart1_tx", 1),
166 NSP_PIN_DESC(14, "uart1_cts", 1),
167 NSP_PIN_DESC(15, "uart1_rts", 1),
168 NSP_PIN_DESC(16, "uart2_rx", 1),
169 NSP_PIN_DESC(17, "uart2_tx", 1),
170 NSP_PIN_DESC(18, "synce", 0),
171 NSP_PIN_DESC(19, "sata0_led", 0),
172 NSP_PIN_DESC(20, "sata1_led", 0),
173 NSP_PIN_DESC(21, "xtal_out", 1),
174 NSP_PIN_DESC(22, "sdio_pwr", 1),
175 NSP_PIN_DESC(23, "sdio_en_1p8v", 1),
176 NSP_PIN_DESC(24, "gpio_24", 1),
177 NSP_PIN_DESC(25, "gpio_25", 1),
178 NSP_PIN_DESC(26, "p5_led0", 0),
179 NSP_PIN_DESC(27, "p5_led1", 0),
180 NSP_PIN_DESC(28, "gpio_28", 1),
181 NSP_PIN_DESC(29, "gpio_29", 1),
182 NSP_PIN_DESC(30, "gpio_30", 1),
183 NSP_PIN_DESC(31, "gpio_31", 1),
184 NSP_PIN_DESC(32, "nand_ale", 0),
185 NSP_PIN_DESC(33, "nand_ce0", 0),
186 NSP_PIN_DESC(34, "nand_r/b", 0),
187 NSP_PIN_DESC(35, "nand_dq0", 0),
188 NSP_PIN_DESC(36, "nand_dq1", 0),
189 NSP_PIN_DESC(37, "nand_dq2", 0),
190 NSP_PIN_DESC(38, "nand_dq3", 0),
191 NSP_PIN_DESC(39, "nand_dq4", 0),
192 NSP_PIN_DESC(40, "nand_dq5", 0),
193 NSP_PIN_DESC(41, "nand_dq6", 0),
194 NSP_PIN_DESC(42, "nand_dq7", 0),
195};
196
197/*
198 * List of groups of pins
199 */
200
201static const unsigned int spi_pins[] = {0, 1, 2, 3};
202static const unsigned int i2c_pins[] = {4, 5};
203static const unsigned int mdio_pins[] = {6, 7};
204static const unsigned int pwm0_pins[] = {8};
205static const unsigned int gpio_b_0_pins[] = {8};
206static const unsigned int pwm1_pins[] = {9};
207static const unsigned int gpio_b_1_pins[] = {9};
208static const unsigned int pwm2_pins[] = {10};
209static const unsigned int gpio_b_2_pins[] = {10};
210static const unsigned int pwm3_pins[] = {11};
211static const unsigned int gpio_b_3_pins[] = {11};
212static const unsigned int uart1_pins[] = {12, 13, 14, 15};
213static const unsigned int uart2_pins[] = {16, 17};
214static const unsigned int synce_pins[] = {18};
215static const unsigned int sata0_led_pins[] = {19};
216static const unsigned int sata1_led_pins[] = {20};
217static const unsigned int xtal_out_pins[] = {21};
218static const unsigned int sdio_pwr_pins[] = {22};
219static const unsigned int sdio_1p8v_pins[] = {23};
220static const unsigned int switch_p05_led0_pins[] = {26};
221static const unsigned int switch_p05_led1_pins[] = {27};
222static const unsigned int nand_pins[] = {32, 33, 34, 35, 36, 37, 38, 39,
223 40, 41, 42};
224static const unsigned int emmc_pins[] = {32, 33, 34, 35, 36, 37, 38, 39,
225 40, 41, 42};
226
227#define NSP_PIN_GROUP(group_name, ba, sh, ma, al) \
228{ \
229 .name = __stringify(group_name) "_grp", \
230 .pins = group_name ## _pins, \
231 .num_pins = ARRAY_SIZE(group_name ## _pins), \
232 .mux = { \
233 .base = ba, \
234 .shift = sh, \
235 .mask = ma, \
236 .alt = al, \
237 } \
238}
239
240/*
241 * List of nsp pin groups
242 */
243static const struct nsp_pin_group nsp_pin_groups[] = {
244 NSP_PIN_GROUP(spi, NSP_MUX_BASE0, 0, 0x0f, 0x00),
245 NSP_PIN_GROUP(i2c, NSP_MUX_BASE0, 3, 0x03, 0x00),
246 NSP_PIN_GROUP(mdio, NSP_MUX_BASE0, 5, 0x03, 0x00),
247 NSP_PIN_GROUP(gpio_b_0, NSP_MUX_BASE0, 7, 0x01, 0x00),
248 NSP_PIN_GROUP(pwm0, NSP_MUX_BASE1, 0, 0x01, 0x01),
249 NSP_PIN_GROUP(gpio_b_1, NSP_MUX_BASE0, 8, 0x01, 0x00),
250 NSP_PIN_GROUP(pwm1, NSP_MUX_BASE1, 1, 0x01, 0x01),
251 NSP_PIN_GROUP(gpio_b_2, NSP_MUX_BASE0, 9, 0x01, 0x00),
252 NSP_PIN_GROUP(pwm2, NSP_MUX_BASE1, 2, 0x01, 0x01),
253 NSP_PIN_GROUP(gpio_b_3, NSP_MUX_BASE0, 10, 0x01, 0x00),
254 NSP_PIN_GROUP(pwm3, NSP_MUX_BASE1, 3, 0x01, 0x01),
255 NSP_PIN_GROUP(uart1, NSP_MUX_BASE0, 11, 0x0f, 0x00),
256 NSP_PIN_GROUP(uart2, NSP_MUX_BASE0, 15, 0x03, 0x00),
257 NSP_PIN_GROUP(synce, NSP_MUX_BASE0, 17, 0x01, 0x01),
258 NSP_PIN_GROUP(sata0_led, NSP_MUX_BASE0, 18, 0x01, 0x01),
259 NSP_PIN_GROUP(sata1_led, NSP_MUX_BASE0, 19, 0x01, 0x01),
260 NSP_PIN_GROUP(xtal_out, NSP_MUX_BASE0, 20, 0x01, 0x00),
261 NSP_PIN_GROUP(sdio_pwr, NSP_MUX_BASE0, 21, 0x01, 0x00),
262 NSP_PIN_GROUP(sdio_1p8v, NSP_MUX_BASE0, 22, 0x01, 0x00),
263 NSP_PIN_GROUP(switch_p05_led0, NSP_MUX_BASE0, 26, 0x01, 0x01),
264 NSP_PIN_GROUP(switch_p05_led1, NSP_MUX_BASE0, 27, 0x01, 0x01),
265 NSP_PIN_GROUP(nand, NSP_MUX_BASE2, 0, 0x01, 0x00),
266 NSP_PIN_GROUP(emmc, NSP_MUX_BASE2, 0, 0x01, 0x01)
267};
268
269/*
270 * List of groups supported by functions
271 */
272
273static const char * const spi_grps[] = {"spi_grp"};
274static const char * const i2c_grps[] = {"i2c_grp"};
275static const char * const mdio_grps[] = {"mdio_grp"};
276static const char * const pwm_grps[] = {"pwm0_grp", "pwm1_grp", "pwm2_grp"
277 , "pwm3_grp"};
278static const char * const gpio_b_grps[] = {"gpio_b_0_grp", "gpio_b_1_grp",
279 "gpio_b_2_grp", "gpio_b_3_grp"};
280static const char * const uart1_grps[] = {"uart1_grp"};
281static const char * const uart2_grps[] = {"uart2_grp"};
282static const char * const synce_grps[] = {"synce_grp"};
283static const char * const sata_led_grps[] = {"sata0_led_grp", "sata1_led_grp"};
284static const char * const xtal_out_grps[] = {"xtal_out_grp"};
285static const char * const sdio_grps[] = {"sdio_pwr_grp", "sdio_1p8v_grp"};
286static const char * const switch_led_grps[] = {"switch_p05_led0_grp",
287 "switch_p05_led1_grp"};
288static const char * const nand_grps[] = {"nand_grp"};
289static const char * const emmc_grps[] = {"emmc_grp"};
290
291#define NSP_PIN_FUNCTION(func) \
292{ \
293 .name = #func, \
294 .groups = func ## _grps, \
295 .num_groups = ARRAY_SIZE(func ## _grps), \
296}
297
298/*
299 * List of supported functions in nsp
300 */
301static const struct nsp_pin_function nsp_pin_functions[] = {
302 NSP_PIN_FUNCTION(spi),
303 NSP_PIN_FUNCTION(i2c),
304 NSP_PIN_FUNCTION(mdio),
305 NSP_PIN_FUNCTION(pwm),
306 NSP_PIN_FUNCTION(gpio_b),
307 NSP_PIN_FUNCTION(uart1),
308 NSP_PIN_FUNCTION(uart2),
309 NSP_PIN_FUNCTION(synce),
310 NSP_PIN_FUNCTION(sata_led),
311 NSP_PIN_FUNCTION(xtal_out),
312 NSP_PIN_FUNCTION(sdio),
313 NSP_PIN_FUNCTION(switch_led),
314 NSP_PIN_FUNCTION(nand),
315 NSP_PIN_FUNCTION(emmc)
316};
317
318static int nsp_get_groups_count(struct pinctrl_dev *pctrl_dev)
319{
320 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
321
322 return pinctrl->num_groups;
323}
324
325static const char *nsp_get_group_name(struct pinctrl_dev *pctrl_dev,
326 unsigned int selector)
327{
328 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
329
330 return pinctrl->groups[selector].name;
331}
332
333static int nsp_get_group_pins(struct pinctrl_dev *pctrl_dev,
334 unsigned int selector, const unsigned int **pins,
335 unsigned int *num_pins)
336{
337 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
338
339 *pins = pinctrl->groups[selector].pins;
340 *num_pins = pinctrl->groups[selector].num_pins;
341
342 return 0;
343}
344
345static void nsp_pin_dbg_show(struct pinctrl_dev *pctrl_dev,
346 struct seq_file *s, unsigned int offset)
347{
348 seq_printf(s, " %s", dev_name(pctrl_dev->dev));
349}
350
351static struct pinctrl_ops nsp_pinctrl_ops = {
352 .get_groups_count = nsp_get_groups_count,
353 .get_group_name = nsp_get_group_name,
354 .get_group_pins = nsp_get_group_pins,
355 .pin_dbg_show = nsp_pin_dbg_show,
356 .dt_node_to_map = pinconf_generic_dt_node_to_map_group,
357 .dt_free_map = pinctrl_utils_free_map,
358};
359
360static int nsp_get_functions_count(struct pinctrl_dev *pctrl_dev)
361{
362 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
363
364 return pinctrl->num_functions;
365}
366
367static const char *nsp_get_function_name(struct pinctrl_dev *pctrl_dev,
368 unsigned int selector)
369{
370 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
371
372 return pinctrl->functions[selector].name;
373}
374
375static int nsp_get_function_groups(struct pinctrl_dev *pctrl_dev,
376 unsigned int selector,
377 const char * const **groups,
378 unsigned * const num_groups)
379{
380 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
381
382 *groups = pinctrl->functions[selector].groups;
383 *num_groups = pinctrl->functions[selector].num_groups;
384
385 return 0;
386}
387
388static int nsp_pinmux_set(struct nsp_pinctrl *pinctrl,
389 const struct nsp_pin_function *func,
390 const struct nsp_pin_group *grp,
391 struct nsp_mux_log *mux_log)
392{
393 const struct nsp_mux *mux = &grp->mux;
394 int i;
395 u32 val, mask;
396 unsigned long flags;
397 void __iomem *base_address;
398
399 for (i = 0; i < pinctrl->num_groups; i++) {
400 if ((mux->shift != mux_log[i].mux.shift) ||
401 (mux->base != mux_log[i].mux.base))
402 continue;
403
404 /* if this is a new configuration, just do it! */
405 if (!mux_log[i].is_configured)
406 break;
407
408 /*
409 * IOMUX has been configured previously and one is trying to
410 * configure it to a different function
411 */
412 if (mux_log[i].mux.alt != mux->alt) {
413 dev_err(pinctrl->dev,
414 "double configuration error detected!\n");
415 dev_err(pinctrl->dev, "func:%s grp:%s\n",
416 func->name, grp->name);
417 return -EINVAL;
418 }
419
420 return 0;
421 }
422 if (i == pinctrl->num_groups)
423 return -EINVAL;
424
425 mask = mux->mask;
426 mux_log[i].mux.alt = mux->alt;
427 mux_log[i].is_configured = true;
428
429 switch (mux->base) {
430 case NSP_MUX_BASE0:
431 base_address = pinctrl->base0;
432 break;
433
434 case NSP_MUX_BASE1:
435 base_address = pinctrl->base1;
436 break;
437
438 case NSP_MUX_BASE2:
439 base_address = pinctrl->base2;
440 break;
441
442 default:
443 return -EINVAL;
444 }
445
446 spin_lock_irqsave(&pinctrl->lock, flags);
447 val = readl(base_address);
448 val &= ~(mask << grp->mux.shift);
449 val |= grp->mux.alt << grp->mux.shift;
450 writel(val, base_address);
451 spin_unlock_irqrestore(&pinctrl->lock, flags);
452
453 return 0;
454}
455
456static int nsp_pinmux_enable(struct pinctrl_dev *pctrl_dev,
457 unsigned int func_select, unsigned int grp_select)
458{
459 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
460 const struct nsp_pin_function *func;
461 const struct nsp_pin_group *grp;
462
463 if (grp_select > pinctrl->num_groups ||
464 func_select > pinctrl->num_functions)
465 return -EINVAL;
466
467 func = &pinctrl->functions[func_select];
468 grp = &pinctrl->groups[grp_select];
469
470 dev_dbg(pctrl_dev->dev, "func:%u name:%s grp:%u name:%s\n",
471 func_select, func->name, grp_select, grp->name);
472
473 dev_dbg(pctrl_dev->dev, "shift:%u alt:%u\n", grp->mux.shift,
474 grp->mux.alt);
475
476 return nsp_pinmux_set(pinctrl, func, grp, pinctrl->mux_log);
477}
478
479
480static int nsp_gpio_request_enable(struct pinctrl_dev *pctrl_dev,
481 struct pinctrl_gpio_range *range,
482 unsigned int pin)
483{
484 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
485 u32 *gpio_select = pctrl_dev->desc->pins[pin].drv_data;
486 u32 val;
487 unsigned long flags;
488
489 spin_lock_irqsave(&pinctrl->lock, flags);
490 val = readl(pinctrl->base0);
491 if ((val & BIT(pin)) != (*gpio_select << pin)) {
492 val &= ~BIT(pin);
493 val |= *gpio_select << pin;
494 writel(val, pinctrl->base0);
495 }
496 spin_unlock_irqrestore(&pinctrl->lock, flags);
497
498 return 0;
499}
500
501static void nsp_gpio_disable_free(struct pinctrl_dev *pctrl_dev,
502 struct pinctrl_gpio_range *range,
503 unsigned int pin)
504{
505 struct nsp_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
506 u32 *gpio_select = pctrl_dev->desc->pins[pin].drv_data;
507 u32 val;
508 unsigned long flags;
509
510 spin_lock_irqsave(&pinctrl->lock, flags);
511 val = readl(pinctrl->base0);
512 if ((val & (1 << pin)) == (*gpio_select << pin)) {
513 val &= ~(1 << pin);
514 if (!(*gpio_select))
515 val |= (1 << pin);
516 writel(val, pinctrl->base0);
517 }
518 spin_unlock_irqrestore(&pinctrl->lock, flags);
519}
520
521static struct pinmux_ops nsp_pinmux_ops = {
522 .get_functions_count = nsp_get_functions_count,
523 .get_function_name = nsp_get_function_name,
524 .get_function_groups = nsp_get_function_groups,
525 .set_mux = nsp_pinmux_enable,
526 .gpio_request_enable = nsp_gpio_request_enable,
527 .gpio_disable_free = nsp_gpio_disable_free,
528};
529
530static struct pinctrl_desc nsp_pinctrl_desc = {
531 .name = "nsp-pinmux",
532 .pctlops = &nsp_pinctrl_ops,
533 .pmxops = &nsp_pinmux_ops,
534};
535
536static int nsp_mux_log_init(struct nsp_pinctrl *pinctrl)
537{
538 struct nsp_mux_log *log;
539 unsigned int i;
540 u32 no_of_groups = ARRAY_SIZE(nsp_pin_groups);
541
542 pinctrl->mux_log = devm_kcalloc(pinctrl->dev, no_of_groups,
543 sizeof(struct nsp_mux_log),
544 GFP_KERNEL);
545 if (!pinctrl->mux_log)
546 return -ENOMEM;
547
548 for (i = 0; i < no_of_groups; i++) {
549 log = &pinctrl->mux_log[i];
550 log->mux.base = nsp_pin_groups[i].mux.base;
551 log->mux.shift = nsp_pin_groups[i].mux.shift;
552 log->mux.alt = 0;
553 log->is_configured = false;
554 }
555
556 return 0;
557}
558
559static int nsp_pinmux_probe(struct platform_device *pdev)
560{
561 struct nsp_pinctrl *pinctrl;
562 struct resource *res;
563 int i, ret;
564 struct pinctrl_pin_desc *pins;
565 unsigned int num_pins = ARRAY_SIZE(nsp_pins);
566
567 pinctrl = devm_kzalloc(&pdev->dev, sizeof(*pinctrl), GFP_KERNEL);
568 if (!pinctrl)
569 return -ENOMEM;
570 pinctrl->dev = &pdev->dev;
571 platform_set_drvdata(pdev, pinctrl);
572 spin_lock_init(&pinctrl->lock);
573
574 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
575 pinctrl->base0 = devm_ioremap_resource(&pdev->dev, res);
576 if (IS_ERR(pinctrl->base0))
577 return PTR_ERR(pinctrl->base0);
578
579 res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
580 pinctrl->base1 = devm_ioremap_nocache(&pdev->dev, res->start,
581 resource_size(res));
582 if (!pinctrl->base1) {
583 dev_err(&pdev->dev, "unable to map I/O space\n");
584 return -ENOMEM;
585 }
586
587 res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
588 pinctrl->base2 = devm_ioremap_resource(&pdev->dev, res);
589 if (IS_ERR(pinctrl->base2))
590 return PTR_ERR(pinctrl->base2);
591
592 ret = nsp_mux_log_init(pinctrl);
593 if (ret) {
594 dev_err(&pdev->dev, "unable to initialize IOMUX log\n");
595 return ret;
596 }
597
598 pins = devm_kcalloc(&pdev->dev, num_pins, sizeof(*pins), GFP_KERNEL);
599 if (!pins)
600 return -ENOMEM;
601
602 for (i = 0; i < num_pins; i++) {
603 pins[i].number = nsp_pins[i].pin;
604 pins[i].name = nsp_pins[i].name;
605 pins[i].drv_data = &nsp_pins[i].gpio_select;
606 }
607
608 pinctrl->groups = nsp_pin_groups;
609 pinctrl->num_groups = ARRAY_SIZE(nsp_pin_groups);
610 pinctrl->functions = nsp_pin_functions;
611 pinctrl->num_functions = ARRAY_SIZE(nsp_pin_functions);
612 nsp_pinctrl_desc.pins = pins;
613 nsp_pinctrl_desc.npins = num_pins;
614
615 pinctrl->pctl = devm_pinctrl_register(&pdev->dev, &nsp_pinctrl_desc,
616 pinctrl);
617 if (IS_ERR(pinctrl->pctl)) {
618 dev_err(&pdev->dev, "unable to register nsp IOMUX pinctrl\n");
619 return PTR_ERR(pinctrl->pctl);
620 }
621
622 return 0;
623}
624
625static const struct of_device_id nsp_pinmux_of_match[] = {
626 { .compatible = "brcm,nsp-pinmux" },
627 { }
628};
629
630static struct platform_driver nsp_pinmux_driver = {
631 .driver = {
632 .name = "nsp-pinmux",
633 .of_match_table = nsp_pinmux_of_match,
634 },
635 .probe = nsp_pinmux_probe,
636};
637
638static int __init nsp_pinmux_init(void)
639{
640 return platform_driver_register(&nsp_pinmux_driver);
641}
642arch_initcall(nsp_pinmux_init);
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index 98d2a1bb44cb..fb38e208f32d 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -225,13 +225,14 @@ static void pinctrl_free_pindescs(struct pinctrl_dev *pctldev,
225} 225}
226 226
227static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev, 227static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
228 unsigned number, const char *name) 228 const struct pinctrl_pin_desc *pin)
229{ 229{
230 struct pin_desc *pindesc; 230 struct pin_desc *pindesc;
231 231
232 pindesc = pin_desc_get(pctldev, number); 232 pindesc = pin_desc_get(pctldev, pin->number);
233 if (pindesc != NULL) { 233 if (pindesc != NULL) {
234 dev_err(pctldev->dev, "pin %d already registered\n", number); 234 dev_err(pctldev->dev, "pin %d already registered\n",
235 pin->number);
235 return -EINVAL; 236 return -EINVAL;
236 } 237 }
237 238
@@ -245,10 +246,10 @@ static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
245 pindesc->pctldev = pctldev; 246 pindesc->pctldev = pctldev;
246 247
247 /* Copy basic pin info */ 248 /* Copy basic pin info */
248 if (name) { 249 if (pin->name) {
249 pindesc->name = name; 250 pindesc->name = pin->name;
250 } else { 251 } else {
251 pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", number); 252 pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", pin->number);
252 if (pindesc->name == NULL) { 253 if (pindesc->name == NULL) {
253 kfree(pindesc); 254 kfree(pindesc);
254 return -ENOMEM; 255 return -ENOMEM;
@@ -256,9 +257,11 @@ static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
256 pindesc->dynamic_name = true; 257 pindesc->dynamic_name = true;
257 } 258 }
258 259
259 radix_tree_insert(&pctldev->pin_desc_tree, number, pindesc); 260 pindesc->drv_data = pin->drv_data;
261
262 radix_tree_insert(&pctldev->pin_desc_tree, pin->number, pindesc);
260 pr_debug("registered pin %d (%s) on %s\n", 263 pr_debug("registered pin %d (%s) on %s\n",
261 number, pindesc->name, pctldev->desc->name); 264 pin->number, pindesc->name, pctldev->desc->name);
262 return 0; 265 return 0;
263} 266}
264 267
@@ -270,8 +273,7 @@ static int pinctrl_register_pins(struct pinctrl_dev *pctldev,
270 int ret = 0; 273 int ret = 0;
271 274
272 for (i = 0; i < num_descs; i++) { 275 for (i = 0; i < num_descs; i++) {
273 ret = pinctrl_register_one_pin(pctldev, 276 ret = pinctrl_register_one_pin(pctldev, &pins[i]);
274 pins[i].number, pins[i].name);
275 if (ret) 277 if (ret)
276 return ret; 278 return ret;
277 } 279 }
@@ -1367,8 +1369,7 @@ static int pinctrl_pins_show(struct seq_file *s, void *what)
1367 if (desc == NULL) 1369 if (desc == NULL)
1368 continue; 1370 continue;
1369 1371
1370 seq_printf(s, "pin %d (%s) ", pin, 1372 seq_printf(s, "pin %d (%s) ", pin, desc->name);
1371 desc->name ? desc->name : "unnamed");
1372 1373
1373 /* Driver-specific info per pin */ 1374 /* Driver-specific info per pin */
1374 if (ops->pin_dbg_show) 1375 if (ops->pin_dbg_show)
diff --git a/drivers/pinctrl/core.h b/drivers/pinctrl/core.h
index ca08723b9ee1..747c423c11f3 100644
--- a/drivers/pinctrl/core.h
+++ b/drivers/pinctrl/core.h
@@ -134,6 +134,7 @@ struct pinctrl_setting {
134 * @name: a name for the pin, e.g. the name of the pin/pad/finger on a 134 * @name: a name for the pin, e.g. the name of the pin/pad/finger on a
135 * datasheet or such 135 * datasheet or such
136 * @dynamic_name: if the name of this pin was dynamically allocated 136 * @dynamic_name: if the name of this pin was dynamically allocated
137 * @drv_data: driver-defined per-pin data. pinctrl core does not touch this
137 * @mux_usecount: If zero, the pin is not claimed, and @owner should be NULL. 138 * @mux_usecount: If zero, the pin is not claimed, and @owner should be NULL.
138 * If non-zero, this pin is claimed by @owner. This field is an integer 139 * If non-zero, this pin is claimed by @owner. This field is an integer
139 * rather than a boolean, since pinctrl_get() might process multiple 140 * rather than a boolean, since pinctrl_get() might process multiple
@@ -148,6 +149,7 @@ struct pin_desc {
148 struct pinctrl_dev *pctldev; 149 struct pinctrl_dev *pctldev;
149 const char *name; 150 const char *name;
150 bool dynamic_name; 151 bool dynamic_name;
152 void *drv_data;
151 /* These fields only added when supporting pinmux drivers */ 153 /* These fields only added when supporting pinmux drivers */
152#ifdef CONFIG_PINMUX 154#ifdef CONFIG_PINMUX
153 unsigned mux_usecount; 155 unsigned mux_usecount;
diff --git a/drivers/pinctrl/devicetree.c b/drivers/pinctrl/devicetree.c
index fe04e748dfe4..54dad89fc9bf 100644
--- a/drivers/pinctrl/devicetree.c
+++ b/drivers/pinctrl/devicetree.c
@@ -195,8 +195,13 @@ int pinctrl_dt_to_map(struct pinctrl *p)
195 propname = kasprintf(GFP_KERNEL, "pinctrl-%d", state); 195 propname = kasprintf(GFP_KERNEL, "pinctrl-%d", state);
196 prop = of_find_property(np, propname, &size); 196 prop = of_find_property(np, propname, &size);
197 kfree(propname); 197 kfree(propname);
198 if (!prop) 198 if (!prop) {
199 if (state == 0) {
200 of_node_put(np);
201 return -ENODEV;
202 }
199 break; 203 break;
204 }
200 list = prop->value; 205 list = prop->value;
201 size /= sizeof(*list); 206 size /= sizeof(*list);
202 207
diff --git a/drivers/pinctrl/freescale/pinctrl-imx.c b/drivers/pinctrl/freescale/pinctrl-imx.c
index eccb47480e1d..71391757938b 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx.c
@@ -16,7 +16,6 @@
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/mfd/syscon.h> 18#include <linux/mfd/syscon.h>
19#include <linux/module.h>
20#include <linux/of.h> 19#include <linux/of.h>
21#include <linux/of_device.h> 20#include <linux/of_device.h>
22#include <linux/of_address.h> 21#include <linux/of_address.h>
@@ -46,7 +45,7 @@ struct imx_pinctrl {
46 const struct imx_pinctrl_soc_info *info; 45 const struct imx_pinctrl_soc_info *info;
47}; 46};
48 47
49static const inline struct imx_pin_group *imx_pinctrl_find_group_by_name( 48static inline const struct imx_pin_group *imx_pinctrl_find_group_by_name(
50 const struct imx_pinctrl_soc_info *info, 49 const struct imx_pinctrl_soc_info *info,
51 const char *name) 50 const char *name)
52{ 51{
@@ -513,13 +512,6 @@ static const struct pinconf_ops imx_pinconf_ops = {
513 .pin_config_group_dbg_show = imx_pinconf_group_dbg_show, 512 .pin_config_group_dbg_show = imx_pinconf_group_dbg_show,
514}; 513};
515 514
516static struct pinctrl_desc imx_pinctrl_desc = {
517 .pctlops = &imx_pctrl_ops,
518 .pmxops = &imx_pmx_ops,
519 .confops = &imx_pinconf_ops,
520 .owner = THIS_MODULE,
521};
522
523/* 515/*
524 * Each pin represented in fsl,pins consists of 5 u32 PIN_FUNC_ID and 516 * Each pin represented in fsl,pins consists of 5 u32 PIN_FUNC_ID and
525 * 1 u32 CONFIG, so 24 types in total for each pin. 517 * 1 u32 CONFIG, so 24 types in total for each pin.
@@ -722,6 +714,7 @@ int imx_pinctrl_probe(struct platform_device *pdev,
722{ 714{
723 struct regmap_config config = { .name = "gpr" }; 715 struct regmap_config config = { .name = "gpr" };
724 struct device_node *dev_np = pdev->dev.of_node; 716 struct device_node *dev_np = pdev->dev.of_node;
717 struct pinctrl_desc *imx_pinctrl_desc;
725 struct device_node *np; 718 struct device_node *np;
726 struct imx_pinctrl *ipctl; 719 struct imx_pinctrl *ipctl;
727 struct resource *res; 720 struct resource *res;
@@ -776,9 +769,18 @@ int imx_pinctrl_probe(struct platform_device *pdev,
776 } 769 }
777 } 770 }
778 771
779 imx_pinctrl_desc.name = dev_name(&pdev->dev); 772 imx_pinctrl_desc = devm_kzalloc(&pdev->dev, sizeof(*imx_pinctrl_desc),
780 imx_pinctrl_desc.pins = info->pins; 773 GFP_KERNEL);
781 imx_pinctrl_desc.npins = info->npins; 774 if (!imx_pinctrl_desc)
775 return -ENOMEM;
776
777 imx_pinctrl_desc->name = dev_name(&pdev->dev);
778 imx_pinctrl_desc->pins = info->pins;
779 imx_pinctrl_desc->npins = info->npins;
780 imx_pinctrl_desc->pctlops = &imx_pctrl_ops,
781 imx_pinctrl_desc->pmxops = &imx_pmx_ops,
782 imx_pinctrl_desc->confops = &imx_pinconf_ops,
783 imx_pinctrl_desc->owner = THIS_MODULE,
782 784
783 ret = imx_pinctrl_probe_dt(pdev, info); 785 ret = imx_pinctrl_probe_dt(pdev, info);
784 if (ret) { 786 if (ret) {
@@ -789,7 +791,8 @@ int imx_pinctrl_probe(struct platform_device *pdev,
789 ipctl->info = info; 791 ipctl->info = info;
790 ipctl->dev = info->dev; 792 ipctl->dev = info->dev;
791 platform_set_drvdata(pdev, ipctl); 793 platform_set_drvdata(pdev, ipctl);
792 ipctl->pctl = devm_pinctrl_register(&pdev->dev, &imx_pinctrl_desc, ipctl); 794 ipctl->pctl = devm_pinctrl_register(&pdev->dev,
795 imx_pinctrl_desc, ipctl);
793 if (IS_ERR(ipctl->pctl)) { 796 if (IS_ERR(ipctl->pctl)) {
794 dev_err(&pdev->dev, "could not register IMX pinctrl driver\n"); 797 dev_err(&pdev->dev, "could not register IMX pinctrl driver\n");
795 return PTR_ERR(ipctl->pctl); 798 return PTR_ERR(ipctl->pctl);
diff --git a/drivers/pinctrl/freescale/pinctrl-imx1-core.c b/drivers/pinctrl/freescale/pinctrl-imx1-core.c
index b4400cb19b61..a4e9f430d452 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx1-core.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx1-core.c
@@ -19,7 +19,6 @@
19#include <linux/err.h> 19#include <linux/err.h>
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/module.h>
23#include <linux/of.h> 22#include <linux/of.h>
24#include <linux/of_device.h> 23#include <linux/of_device.h>
25#include <linux/pinctrl/machine.h> 24#include <linux/pinctrl/machine.h>
@@ -157,7 +156,7 @@ static int imx1_read_bit(struct imx1_pinctrl *ipctl, unsigned int pin_id,
157 return !!(readl(reg) & BIT(offset)); 156 return !!(readl(reg) & BIT(offset));
158} 157}
159 158
160static const inline struct imx1_pin_group *imx1_pinctrl_find_group_by_name( 159static inline const struct imx1_pin_group *imx1_pinctrl_find_group_by_name(
161 const struct imx1_pinctrl_soc_info *info, 160 const struct imx1_pinctrl_soc_info *info,
162 const char *name) 161 const char *name)
163{ 162{
diff --git a/drivers/pinctrl/freescale/pinctrl-imx1.c b/drivers/pinctrl/freescale/pinctrl-imx1.c
index 04723455db58..fc8efc748734 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx1.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx1.c
@@ -9,7 +9,7 @@
9 * (at your option) any later version. 9 * (at your option) any later version.
10 */ 10 */
11 11
12#include <linux/module.h> 12#include <linux/init.h>
13#include <linux/of.h> 13#include <linux/of.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/pinctrl/pinctrl.h> 15#include <linux/pinctrl/pinctrl.h>
@@ -262,7 +262,6 @@ static const struct of_device_id imx1_pinctrl_of_match[] = {
262 { .compatible = "fsl,imx1-iomuxc", }, 262 { .compatible = "fsl,imx1-iomuxc", },
263 { } 263 { }
264}; 264};
265MODULE_DEVICE_TABLE(of, imx1_pinctrl_of_match);
266 265
267static struct platform_driver imx1_pinctrl_driver = { 266static struct platform_driver imx1_pinctrl_driver = {
268 .driver = { 267 .driver = {
@@ -270,8 +269,4 @@ static struct platform_driver imx1_pinctrl_driver = {
270 .of_match_table = imx1_pinctrl_of_match, 269 .of_match_table = imx1_pinctrl_of_match,
271 }, 270 },
272}; 271};
273module_platform_driver_probe(imx1_pinctrl_driver, imx1_pinctrl_probe); 272builtin_platform_driver_probe(imx1_pinctrl_driver, imx1_pinctrl_probe);
274
275MODULE_AUTHOR("Alexander Shiyan <shc_work@mail.ru>");
276MODULE_DESCRIPTION("Freescale i.MX1 pinctrl driver");
277MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx21.c b/drivers/pinctrl/freescale/pinctrl-imx21.c
index aa1221f4dbb7..73e26bc12f09 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx21.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx21.c
@@ -9,7 +9,7 @@
9 * (at your option) any later version. 9 * (at your option) any later version.
10 */ 10 */
11 11
12#include <linux/module.h> 12#include <linux/init.h>
13#include <linux/of.h> 13#include <linux/of.h>
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/pinctrl/pinctrl.h> 15#include <linux/pinctrl/pinctrl.h>
@@ -325,7 +325,6 @@ static const struct of_device_id imx21_pinctrl_of_match[] = {
325 { .compatible = "fsl,imx21-iomuxc", }, 325 { .compatible = "fsl,imx21-iomuxc", },
326 { } 326 { }
327}; 327};
328MODULE_DEVICE_TABLE(of, imx21_pinctrl_of_match);
329 328
330static struct platform_driver imx21_pinctrl_driver = { 329static struct platform_driver imx21_pinctrl_driver = {
331 .driver = { 330 .driver = {
@@ -333,8 +332,4 @@ static struct platform_driver imx21_pinctrl_driver = {
333 .of_match_table = imx21_pinctrl_of_match, 332 .of_match_table = imx21_pinctrl_of_match,
334 }, 333 },
335}; 334};
336module_platform_driver_probe(imx21_pinctrl_driver, imx21_pinctrl_probe); 335builtin_platform_driver_probe(imx21_pinctrl_driver, imx21_pinctrl_probe);
337
338MODULE_AUTHOR("Alexander Shiyan <shc_work@mail.ru>");
339MODULE_DESCRIPTION("Freescale i.MX21 pinctrl driver");
340MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx23.c b/drivers/pinctrl/freescale/pinctrl-imx23.c
index 955cbf4f094f..89b4f160138f 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx23.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx23.c
@@ -1,4 +1,7 @@
1/* 1/*
2 * Freescale i.MX23 pinctrl driver
3 *
4 * Author: Shawn Guo <shawn.guo@linaro.org>
2 * Copyright 2012 Freescale Semiconductor, Inc. 5 * Copyright 2012 Freescale Semiconductor, Inc.
3 * 6 *
4 * The code contained herein is licensed under the GNU General Public 7 * The code contained herein is licensed under the GNU General Public
@@ -10,7 +13,6 @@
10 */ 13 */
11 14
12#include <linux/init.h> 15#include <linux/init.h>
13#include <linux/module.h>
14#include <linux/of_device.h> 16#include <linux/of_device.h>
15#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
16#include "pinctrl-mxs.h" 18#include "pinctrl-mxs.h"
@@ -276,15 +278,14 @@ static const struct of_device_id imx23_pinctrl_of_match[] = {
276 { .compatible = "fsl,imx23-pinctrl", }, 278 { .compatible = "fsl,imx23-pinctrl", },
277 { /* sentinel */ } 279 { /* sentinel */ }
278}; 280};
279MODULE_DEVICE_TABLE(of, imx23_pinctrl_of_match);
280 281
281static struct platform_driver imx23_pinctrl_driver = { 282static struct platform_driver imx23_pinctrl_driver = {
282 .driver = { 283 .driver = {
283 .name = "imx23-pinctrl", 284 .name = "imx23-pinctrl",
285 .suppress_bind_attrs = true,
284 .of_match_table = imx23_pinctrl_of_match, 286 .of_match_table = imx23_pinctrl_of_match,
285 }, 287 },
286 .probe = imx23_pinctrl_probe, 288 .probe = imx23_pinctrl_probe,
287 .remove = mxs_pinctrl_remove,
288}; 289};
289 290
290static int __init imx23_pinctrl_init(void) 291static int __init imx23_pinctrl_init(void)
@@ -292,13 +293,3 @@ static int __init imx23_pinctrl_init(void)
292 return platform_driver_register(&imx23_pinctrl_driver); 293 return platform_driver_register(&imx23_pinctrl_driver);
293} 294}
294postcore_initcall(imx23_pinctrl_init); 295postcore_initcall(imx23_pinctrl_init);
295
296static void __exit imx23_pinctrl_exit(void)
297{
298 platform_driver_unregister(&imx23_pinctrl_driver);
299}
300module_exit(imx23_pinctrl_exit);
301
302MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
303MODULE_DESCRIPTION("Freescale i.MX23 pinctrl driver");
304MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx25.c b/drivers/pinctrl/freescale/pinctrl-imx25.c
index 81ad546d74bb..d7367fabe712 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx25.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx25.c
@@ -18,7 +18,6 @@
18#include <linux/err.h> 18#include <linux/err.h>
19#include <linux/init.h> 19#include <linux/init.h>
20#include <linux/io.h> 20#include <linux/io.h>
21#include <linux/module.h>
22#include <linux/of.h> 21#include <linux/of.h>
23#include <linux/of_device.h> 22#include <linux/of_device.h>
24#include <linux/pinctrl/pinctrl.h> 23#include <linux/pinctrl/pinctrl.h>
@@ -338,12 +337,3 @@ static int __init imx25_pinctrl_init(void)
338 return platform_driver_register(&imx25_pinctrl_driver); 337 return platform_driver_register(&imx25_pinctrl_driver);
339} 338}
340arch_initcall(imx25_pinctrl_init); 339arch_initcall(imx25_pinctrl_init);
341
342static void __exit imx25_pinctrl_exit(void)
343{
344 platform_driver_unregister(&imx25_pinctrl_driver);
345}
346module_exit(imx25_pinctrl_exit);
347MODULE_AUTHOR("Denis Carikli <denis@eukrea.com>");
348MODULE_DESCRIPTION("Freescale IMX25 pinctrl driver");
349MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx27.c b/drivers/pinctrl/freescale/pinctrl-imx27.c
index f828fbbba4b9..e5992036fc6c 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx27.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx27.c
@@ -14,7 +14,6 @@
14#include <linux/err.h> 14#include <linux/err.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/io.h> 16#include <linux/io.h>
17#include <linux/module.h>
18#include <linux/of.h> 17#include <linux/of.h>
19#include <linux/of_device.h> 18#include <linux/of_device.h>
20#include <linux/pinctrl/pinctrl.h> 19#include <linux/pinctrl/pinctrl.h>
@@ -412,12 +411,3 @@ static int __init imx27_pinctrl_init(void)
412 return platform_driver_register(&imx27_pinctrl_driver); 411 return platform_driver_register(&imx27_pinctrl_driver);
413} 412}
414arch_initcall(imx27_pinctrl_init); 413arch_initcall(imx27_pinctrl_init);
415
416static void __exit imx27_pinctrl_exit(void)
417{
418 platform_driver_unregister(&imx27_pinctrl_driver);
419}
420module_exit(imx27_pinctrl_exit);
421MODULE_AUTHOR("Markus Pargmann <mpa@pengutronix.de>");
422MODULE_DESCRIPTION("Freescale IMX27 pinctrl driver");
423MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx28.c b/drivers/pinctrl/freescale/pinctrl-imx28.c
index 5082efec4f72..295236dfb0bc 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx28.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx28.c
@@ -1,4 +1,7 @@
1/* 1/*
2 * Freescale i.MX28 pinctrl driver
3 *
4 * Author: Shawn Guo <shawn.guo@linaro.org>
2 * Copyright 2012 Freescale Semiconductor, Inc. 5 * Copyright 2012 Freescale Semiconductor, Inc.
3 * 6 *
4 * The code contained herein is licensed under the GNU General Public 7 * The code contained herein is licensed under the GNU General Public
@@ -10,7 +13,6 @@
10 */ 13 */
11 14
12#include <linux/init.h> 15#include <linux/init.h>
13#include <linux/module.h>
14#include <linux/of_device.h> 16#include <linux/of_device.h>
15#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
16#include "pinctrl-mxs.h" 18#include "pinctrl-mxs.h"
@@ -392,15 +394,14 @@ static const struct of_device_id imx28_pinctrl_of_match[] = {
392 { .compatible = "fsl,imx28-pinctrl", }, 394 { .compatible = "fsl,imx28-pinctrl", },
393 { /* sentinel */ } 395 { /* sentinel */ }
394}; 396};
395MODULE_DEVICE_TABLE(of, imx28_pinctrl_of_match);
396 397
397static struct platform_driver imx28_pinctrl_driver = { 398static struct platform_driver imx28_pinctrl_driver = {
398 .driver = { 399 .driver = {
399 .name = "imx28-pinctrl", 400 .name = "imx28-pinctrl",
401 .suppress_bind_attrs = true,
400 .of_match_table = imx28_pinctrl_of_match, 402 .of_match_table = imx28_pinctrl_of_match,
401 }, 403 },
402 .probe = imx28_pinctrl_probe, 404 .probe = imx28_pinctrl_probe,
403 .remove = mxs_pinctrl_remove,
404}; 405};
405 406
406static int __init imx28_pinctrl_init(void) 407static int __init imx28_pinctrl_init(void)
@@ -408,13 +409,3 @@ static int __init imx28_pinctrl_init(void)
408 return platform_driver_register(&imx28_pinctrl_driver); 409 return platform_driver_register(&imx28_pinctrl_driver);
409} 410}
410postcore_initcall(imx28_pinctrl_init); 411postcore_initcall(imx28_pinctrl_init);
411
412static void __exit imx28_pinctrl_exit(void)
413{
414 platform_driver_unregister(&imx28_pinctrl_driver);
415}
416module_exit(imx28_pinctrl_exit);
417
418MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
419MODULE_DESCRIPTION("Freescale i.MX28 pinctrl driver");
420MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx35.c b/drivers/pinctrl/freescale/pinctrl-imx35.c
index 13eb224a29a9..6315ba6af431 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx35.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx35.c
@@ -16,7 +16,6 @@
16#include <linux/err.h> 16#include <linux/err.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/io.h> 18#include <linux/io.h>
19#include <linux/module.h>
20#include <linux/of.h> 19#include <linux/of.h>
21#include <linux/of_device.h> 20#include <linux/of_device.h>
22#include <linux/pinctrl/pinctrl.h> 21#include <linux/pinctrl/pinctrl.h>
@@ -1028,12 +1027,3 @@ static int __init imx35_pinctrl_init(void)
1028 return platform_driver_register(&imx35_pinctrl_driver); 1027 return platform_driver_register(&imx35_pinctrl_driver);
1029} 1028}
1030arch_initcall(imx35_pinctrl_init); 1029arch_initcall(imx35_pinctrl_init);
1031
1032static void __exit imx35_pinctrl_exit(void)
1033{
1034 platform_driver_unregister(&imx35_pinctrl_driver);
1035}
1036module_exit(imx35_pinctrl_exit);
1037MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>");
1038MODULE_DESCRIPTION("Freescale IMX35 pinctrl driver");
1039MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx50.c b/drivers/pinctrl/freescale/pinctrl-imx50.c
index 95a36c88b66a..8e3a17df5c5d 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx50.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx50.c
@@ -14,7 +14,6 @@
14#include <linux/err.h> 14#include <linux/err.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/io.h> 16#include <linux/io.h>
17#include <linux/module.h>
18#include <linux/of.h> 17#include <linux/of.h>
19#include <linux/of_device.h> 18#include <linux/of_device.h>
20#include <linux/pinctrl/pinctrl.h> 19#include <linux/pinctrl/pinctrl.h>
@@ -415,11 +414,3 @@ static int __init imx50_pinctrl_init(void)
415 return platform_driver_register(&imx50_pinctrl_driver); 414 return platform_driver_register(&imx50_pinctrl_driver);
416} 415}
417arch_initcall(imx50_pinctrl_init); 416arch_initcall(imx50_pinctrl_init);
418
419static void __exit imx50_pinctrl_exit(void)
420{
421 platform_driver_unregister(&imx50_pinctrl_driver);
422}
423module_exit(imx50_pinctrl_exit);
424MODULE_DESCRIPTION("Freescale IMX50 pinctrl driver");
425MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx51.c b/drivers/pinctrl/freescale/pinctrl-imx51.c
index 0863e5279896..eeac64ba2709 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx51.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx51.c
@@ -15,7 +15,6 @@
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/module.h>
19#include <linux/of.h> 18#include <linux/of.h>
20#include <linux/of_device.h> 19#include <linux/of_device.h>
21#include <linux/pinctrl/pinctrl.h> 20#include <linux/pinctrl/pinctrl.h>
@@ -791,12 +790,3 @@ static int __init imx51_pinctrl_init(void)
791 return platform_driver_register(&imx51_pinctrl_driver); 790 return platform_driver_register(&imx51_pinctrl_driver);
792} 791}
793arch_initcall(imx51_pinctrl_init); 792arch_initcall(imx51_pinctrl_init);
794
795static void __exit imx51_pinctrl_exit(void)
796{
797 platform_driver_unregister(&imx51_pinctrl_driver);
798}
799module_exit(imx51_pinctrl_exit);
800MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>");
801MODULE_DESCRIPTION("Freescale IMX51 pinctrl driver");
802MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx53.c b/drivers/pinctrl/freescale/pinctrl-imx53.c
index 64c9cbe2a5df..46a9572f3473 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx53.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx53.c
@@ -15,7 +15,6 @@
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/module.h>
19#include <linux/of.h> 18#include <linux/of.h>
20#include <linux/of_device.h> 19#include <linux/of_device.h>
21#include <linux/pinctrl/pinctrl.h> 20#include <linux/pinctrl/pinctrl.h>
@@ -478,12 +477,3 @@ static int __init imx53_pinctrl_init(void)
478 return platform_driver_register(&imx53_pinctrl_driver); 477 return platform_driver_register(&imx53_pinctrl_driver);
479} 478}
480arch_initcall(imx53_pinctrl_init); 479arch_initcall(imx53_pinctrl_init);
481
482static void __exit imx53_pinctrl_exit(void)
483{
484 platform_driver_unregister(&imx53_pinctrl_driver);
485}
486module_exit(imx53_pinctrl_exit);
487MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>");
488MODULE_DESCRIPTION("Freescale IMX53 pinctrl driver");
489MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx6dl.c b/drivers/pinctrl/freescale/pinctrl-imx6dl.c
index de17bac8ad89..3f25ca5867cc 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx6dl.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx6dl.c
@@ -1,4 +1,7 @@
1/* 1/*
2 * Freescale imx6dl pinctrl driver
3 *
4 * Author: Shawn Guo <shawn.guo@linaro.org>
2 * Copyright (C) 2013 Freescale Semiconductor, Inc. 5 * Copyright (C) 2013 Freescale Semiconductor, Inc.
3 * 6 *
4 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
@@ -9,7 +12,6 @@
9#include <linux/err.h> 12#include <linux/err.h>
10#include <linux/init.h> 13#include <linux/init.h>
11#include <linux/io.h> 14#include <linux/io.h>
12#include <linux/module.h>
13#include <linux/of.h> 15#include <linux/of.h>
14#include <linux/of_device.h> 16#include <linux/of_device.h>
15#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
@@ -484,13 +486,3 @@ static int __init imx6dl_pinctrl_init(void)
484 return platform_driver_register(&imx6dl_pinctrl_driver); 486 return platform_driver_register(&imx6dl_pinctrl_driver);
485} 487}
486arch_initcall(imx6dl_pinctrl_init); 488arch_initcall(imx6dl_pinctrl_init);
487
488static void __exit imx6dl_pinctrl_exit(void)
489{
490 platform_driver_unregister(&imx6dl_pinctrl_driver);
491}
492module_exit(imx6dl_pinctrl_exit);
493
494MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
495MODULE_DESCRIPTION("Freescale imx6dl pinctrl driver");
496MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx6q.c b/drivers/pinctrl/freescale/pinctrl-imx6q.c
index 55cd8a0e367d..d61651c40458 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx6q.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx6q.c
@@ -15,7 +15,6 @@
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/module.h>
19#include <linux/of.h> 18#include <linux/of.h>
20#include <linux/of_device.h> 19#include <linux/of_device.h>
21#include <linux/pinctrl/pinctrl.h> 20#include <linux/pinctrl/pinctrl.h>
@@ -490,12 +489,3 @@ static int __init imx6q_pinctrl_init(void)
490 return platform_driver_register(&imx6q_pinctrl_driver); 489 return platform_driver_register(&imx6q_pinctrl_driver);
491} 490}
492arch_initcall(imx6q_pinctrl_init); 491arch_initcall(imx6q_pinctrl_init);
493
494static void __exit imx6q_pinctrl_exit(void)
495{
496 platform_driver_unregister(&imx6q_pinctrl_driver);
497}
498module_exit(imx6q_pinctrl_exit);
499MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>");
500MODULE_DESCRIPTION("Freescale IMX6Q pinctrl driver");
501MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx6sl.c b/drivers/pinctrl/freescale/pinctrl-imx6sl.c
index bf455b8e73fc..d023f6b00623 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx6sl.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx6sl.c
@@ -1,4 +1,7 @@
1/* 1/*
2 * Freescale imx6sl pinctrl driver
3 *
4 * Author: Shawn Guo <shawn.guo@linaro.org>
2 * Copyright (C) 2013 Freescale Semiconductor, Inc. 5 * Copyright (C) 2013 Freescale Semiconductor, Inc.
3 * 6 *
4 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
@@ -9,7 +12,6 @@
9#include <linux/err.h> 12#include <linux/err.h>
10#include <linux/init.h> 13#include <linux/init.h>
11#include <linux/io.h> 14#include <linux/io.h>
12#include <linux/module.h>
13#include <linux/of.h> 15#include <linux/of.h>
14#include <linux/of_device.h> 16#include <linux/of_device.h>
15#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
@@ -371,7 +373,6 @@ static const struct of_device_id imx6sl_pinctrl_of_match[] = {
371 { .compatible = "fsl,imx6sl-iomuxc", }, 373 { .compatible = "fsl,imx6sl-iomuxc", },
372 { /* sentinel */ } 374 { /* sentinel */ }
373}; 375};
374MODULE_DEVICE_TABLE(of, imx6sl_pinctrl_of_match);
375 376
376static int imx6sl_pinctrl_probe(struct platform_device *pdev) 377static int imx6sl_pinctrl_probe(struct platform_device *pdev)
377{ 378{
@@ -391,13 +392,3 @@ static int __init imx6sl_pinctrl_init(void)
391 return platform_driver_register(&imx6sl_pinctrl_driver); 392 return platform_driver_register(&imx6sl_pinctrl_driver);
392} 393}
393arch_initcall(imx6sl_pinctrl_init); 394arch_initcall(imx6sl_pinctrl_init);
394
395static void __exit imx6sl_pinctrl_exit(void)
396{
397 platform_driver_unregister(&imx6sl_pinctrl_driver);
398}
399module_exit(imx6sl_pinctrl_exit);
400
401MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
402MODULE_DESCRIPTION("Freescale imx6sl pinctrl driver");
403MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx6sx.c b/drivers/pinctrl/freescale/pinctrl-imx6sx.c
index 84118c388cc5..898b781701e6 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx6sx.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx6sx.c
@@ -1,4 +1,7 @@
1/* 1/*
2 * Freescale imx6sx pinctrl driver
3 *
4 * Author: Anson Huang <Anson.Huang@freescale.com>
2 * Copyright (C) 2014 Freescale Semiconductor, Inc. 5 * Copyright (C) 2014 Freescale Semiconductor, Inc.
3 * 6 *
4 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
@@ -9,7 +12,6 @@
9#include <linux/err.h> 12#include <linux/err.h>
10#include <linux/init.h> 13#include <linux/init.h>
11#include <linux/io.h> 14#include <linux/io.h>
12#include <linux/module.h>
13#include <linux/of.h> 15#include <linux/of.h>
14#include <linux/of_device.h> 16#include <linux/of_device.h>
15#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
@@ -394,13 +396,3 @@ static int __init imx6sx_pinctrl_init(void)
394 return platform_driver_register(&imx6sx_pinctrl_driver); 396 return platform_driver_register(&imx6sx_pinctrl_driver);
395} 397}
396arch_initcall(imx6sx_pinctrl_init); 398arch_initcall(imx6sx_pinctrl_init);
397
398static void __exit imx6sx_pinctrl_exit(void)
399{
400 platform_driver_unregister(&imx6sx_pinctrl_driver);
401}
402module_exit(imx6sx_pinctrl_exit);
403
404MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>");
405MODULE_DESCRIPTION("Freescale imx6sx pinctrl driver");
406MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx6ul.c b/drivers/pinctrl/freescale/pinctrl-imx6ul.c
index c707fdd933ec..1aeb840aae1d 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx6ul.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx6ul.c
@@ -1,4 +1,7 @@
1/* 1/*
2 * Freescale imx6ul pinctrl driver
3 *
4 * Author: Anson Huang <Anson.Huang@freescale.com>
2 * Copyright (C) 2015 Freescale Semiconductor, Inc. 5 * Copyright (C) 2015 Freescale Semiconductor, Inc.
3 * 6 *
4 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
@@ -9,7 +12,6 @@
9#include <linux/err.h> 12#include <linux/err.h>
10#include <linux/init.h> 13#include <linux/init.h>
11#include <linux/io.h> 14#include <linux/io.h>
12#include <linux/module.h>
13#include <linux/of.h> 15#include <linux/of.h>
14#include <linux/of_device.h> 16#include <linux/of_device.h>
15#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
@@ -310,13 +312,3 @@ static int __init imx6ul_pinctrl_init(void)
310 return platform_driver_register(&imx6ul_pinctrl_driver); 312 return platform_driver_register(&imx6ul_pinctrl_driver);
311} 313}
312arch_initcall(imx6ul_pinctrl_init); 314arch_initcall(imx6ul_pinctrl_init);
313
314static void __exit imx6ul_pinctrl_exit(void)
315{
316 platform_driver_unregister(&imx6ul_pinctrl_driver);
317}
318module_exit(imx6ul_pinctrl_exit);
319
320MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>");
321MODULE_DESCRIPTION("Freescale imx6ul pinctrl driver");
322MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-imx7d.c b/drivers/pinctrl/freescale/pinctrl-imx7d.c
index d30d91f80dfd..a465a66c3ef4 100644
--- a/drivers/pinctrl/freescale/pinctrl-imx7d.c
+++ b/drivers/pinctrl/freescale/pinctrl-imx7d.c
@@ -1,4 +1,7 @@
1/* 1/*
2 * Freescale imx7d pinctrl driver
3 *
4 * Author: Anson Huang <Anson.Huang@freescale.com>
2 * Copyright (C) 2014-2015 Freescale Semiconductor, Inc. 5 * Copyright (C) 2014-2015 Freescale Semiconductor, Inc.
3 * 6 *
4 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
@@ -9,7 +12,6 @@
9#include <linux/err.h> 12#include <linux/err.h>
10#include <linux/init.h> 13#include <linux/init.h>
11#include <linux/io.h> 14#include <linux/io.h>
12#include <linux/module.h>
13#include <linux/of.h> 15#include <linux/of.h>
14#include <linux/of_device.h> 16#include <linux/of_device.h>
15#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
@@ -402,13 +404,3 @@ static int __init imx7d_pinctrl_init(void)
402 return platform_driver_register(&imx7d_pinctrl_driver); 404 return platform_driver_register(&imx7d_pinctrl_driver);
403} 405}
404arch_initcall(imx7d_pinctrl_init); 406arch_initcall(imx7d_pinctrl_init);
405
406static void __exit imx7d_pinctrl_exit(void)
407{
408 platform_driver_unregister(&imx7d_pinctrl_driver);
409}
410module_exit(imx7d_pinctrl_exit);
411
412MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>");
413MODULE_DESCRIPTION("Freescale imx7d pinctrl driver");
414MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/freescale/pinctrl-mxs.c b/drivers/pinctrl/freescale/pinctrl-mxs.c
index 6bbda6b4ab50..41b5b07d5a2b 100644
--- a/drivers/pinctrl/freescale/pinctrl-mxs.c
+++ b/drivers/pinctrl/freescale/pinctrl-mxs.c
@@ -12,7 +12,6 @@
12#include <linux/err.h> 12#include <linux/err.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <linux/module.h>
16#include <linux/of.h> 15#include <linux/of.h>
17#include <linux/of_address.h> 16#include <linux/of_address.h>
18#include <linux/pinctrl/machine.h> 17#include <linux/pinctrl/machine.h>
@@ -553,14 +552,3 @@ err:
553 return ret; 552 return ret;
554} 553}
555EXPORT_SYMBOL_GPL(mxs_pinctrl_probe); 554EXPORT_SYMBOL_GPL(mxs_pinctrl_probe);
556
557int mxs_pinctrl_remove(struct platform_device *pdev)
558{
559 struct mxs_pinctrl_data *d = platform_get_drvdata(pdev);
560
561 pinctrl_unregister(d->pctl);
562 iounmap(d->base);
563
564 return 0;
565}
566EXPORT_SYMBOL_GPL(mxs_pinctrl_remove);
diff --git a/drivers/pinctrl/freescale/pinctrl-mxs.h b/drivers/pinctrl/freescale/pinctrl-mxs.h
index fdd88d0bae22..34dbf75208dc 100644
--- a/drivers/pinctrl/freescale/pinctrl-mxs.h
+++ b/drivers/pinctrl/freescale/pinctrl-mxs.h
@@ -86,6 +86,5 @@ struct mxs_pinctrl_soc_data {
86 86
87int mxs_pinctrl_probe(struct platform_device *pdev, 87int mxs_pinctrl_probe(struct platform_device *pdev,
88 struct mxs_pinctrl_soc_data *soc); 88 struct mxs_pinctrl_soc_data *soc);
89int mxs_pinctrl_remove(struct platform_device *pdev);
90 89
91#endif /* __PINCTRL_MXS_H */ 90#endif /* __PINCTRL_MXS_H */
diff --git a/drivers/pinctrl/freescale/pinctrl-vf610.c b/drivers/pinctrl/freescale/pinctrl-vf610.c
index 6d81be096bc0..2b1e198e3092 100644
--- a/drivers/pinctrl/freescale/pinctrl-vf610.c
+++ b/drivers/pinctrl/freescale/pinctrl-vf610.c
@@ -12,7 +12,6 @@
12#include <linux/err.h> 12#include <linux/err.h>
13#include <linux/init.h> 13#include <linux/init.h>
14#include <linux/io.h> 14#include <linux/io.h>
15#include <linux/module.h>
16#include <linux/of.h> 15#include <linux/of.h>
17#include <linux/of_device.h> 16#include <linux/of_device.h>
18#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
@@ -325,12 +324,3 @@ static int __init vf610_pinctrl_init(void)
325 return platform_driver_register(&vf610_pinctrl_driver); 324 return platform_driver_register(&vf610_pinctrl_driver);
326} 325}
327arch_initcall(vf610_pinctrl_init); 326arch_initcall(vf610_pinctrl_init);
328
329static void __exit vf610_pinctrl_exit(void)
330{
331 platform_driver_unregister(&vf610_pinctrl_driver);
332}
333module_exit(vf610_pinctrl_exit);
334
335MODULE_DESCRIPTION("Freescale VF610 pinctrl driver");
336MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/intel/Kconfig b/drivers/pinctrl/intel/Kconfig
index 1c74e038b7b0..00fb055a4897 100644
--- a/drivers/pinctrl/intel/Kconfig
+++ b/drivers/pinctrl/intel/Kconfig
@@ -29,6 +29,17 @@ config PINCTRL_CHERRYVIEW
29 Cherryview/Braswell pinctrl driver provides an interface that 29 Cherryview/Braswell pinctrl driver provides an interface that
30 allows configuring of SoC pins and using them as GPIOs. 30 allows configuring of SoC pins and using them as GPIOs.
31 31
32config PINCTRL_MERRIFIELD
33 tristate "Intel Merrifield pinctrl driver"
34 depends on X86_INTEL_MID
35 select PINMUX
36 select PINCONF
37 select GENERIC_PINCONF
38 help
39 Merrifield Family-Level Interface Shim (FLIS) driver provides an
40 interface that allows configuring of SoC pins and using them as
41 GPIOs.
42
32config PINCTRL_INTEL 43config PINCTRL_INTEL
33 tristate 44 tristate
34 select PINMUX 45 select PINMUX
diff --git a/drivers/pinctrl/intel/Makefile b/drivers/pinctrl/intel/Makefile
index 03bc68e3546c..30803078f09e 100644
--- a/drivers/pinctrl/intel/Makefile
+++ b/drivers/pinctrl/intel/Makefile
@@ -2,6 +2,7 @@
2 2
3obj-$(CONFIG_PINCTRL_BAYTRAIL) += pinctrl-baytrail.o 3obj-$(CONFIG_PINCTRL_BAYTRAIL) += pinctrl-baytrail.o
4obj-$(CONFIG_PINCTRL_CHERRYVIEW) += pinctrl-cherryview.o 4obj-$(CONFIG_PINCTRL_CHERRYVIEW) += pinctrl-cherryview.o
5obj-$(CONFIG_PINCTRL_MERRIFIELD) += pinctrl-merrifield.o
5obj-$(CONFIG_PINCTRL_INTEL) += pinctrl-intel.o 6obj-$(CONFIG_PINCTRL_INTEL) += pinctrl-intel.o
6obj-$(CONFIG_PINCTRL_BROXTON) += pinctrl-broxton.o 7obj-$(CONFIG_PINCTRL_BROXTON) += pinctrl-broxton.o
7obj-$(CONFIG_PINCTRL_SUNRISEPOINT) += pinctrl-sunrisepoint.o 8obj-$(CONFIG_PINCTRL_SUNRISEPOINT) += pinctrl-sunrisepoint.o
diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c
index 7abfd42e8ffd..d22a9fe2e6df 100644
--- a/drivers/pinctrl/intel/pinctrl-baytrail.c
+++ b/drivers/pinctrl/intel/pinctrl-baytrail.c
@@ -15,7 +15,6 @@
15 */ 15 */
16 16
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/module.h>
19#include <linux/init.h> 18#include <linux/init.h>
20#include <linux/types.h> 19#include <linux/types.h>
21#include <linux/bitops.h> 20#include <linux/bitops.h>
@@ -1822,17 +1821,6 @@ static int byt_pinctrl_probe(struct platform_device *pdev)
1822 return 0; 1821 return 0;
1823} 1822}
1824 1823
1825static int byt_pinctrl_remove(struct platform_device *pdev)
1826{
1827 struct byt_gpio *vg = platform_get_drvdata(pdev);
1828
1829 pm_runtime_disable(&pdev->dev);
1830 gpiochip_remove(&vg->chip);
1831 pinctrl_unregister(vg->pctl_dev);
1832
1833 return 0;
1834}
1835
1836#ifdef CONFIG_PM_SLEEP 1824#ifdef CONFIG_PM_SLEEP
1837static int byt_gpio_suspend(struct device *dev) 1825static int byt_gpio_suspend(struct device *dev)
1838{ 1826{
@@ -1930,10 +1918,11 @@ static const struct dev_pm_ops byt_gpio_pm_ops = {
1930 1918
1931static struct platform_driver byt_gpio_driver = { 1919static struct platform_driver byt_gpio_driver = {
1932 .probe = byt_pinctrl_probe, 1920 .probe = byt_pinctrl_probe,
1933 .remove = byt_pinctrl_remove,
1934 .driver = { 1921 .driver = {
1935 .name = "byt_gpio", 1922 .name = "byt_gpio",
1936 .pm = &byt_gpio_pm_ops, 1923 .pm = &byt_gpio_pm_ops,
1924 .suppress_bind_attrs = true,
1925
1937 .acpi_match_table = ACPI_PTR(byt_gpio_acpi_match), 1926 .acpi_match_table = ACPI_PTR(byt_gpio_acpi_match),
1938 }, 1927 },
1939}; 1928};
@@ -1943,9 +1932,3 @@ static int __init byt_gpio_init(void)
1943 return platform_driver_register(&byt_gpio_driver); 1932 return platform_driver_register(&byt_gpio_driver);
1944} 1933}
1945subsys_initcall(byt_gpio_init); 1934subsys_initcall(byt_gpio_init);
1946
1947static void __exit byt_gpio_exit(void)
1948{
1949 platform_driver_unregister(&byt_gpio_driver);
1950}
1951module_exit(byt_gpio_exit);
diff --git a/drivers/pinctrl/intel/pinctrl-broxton.c b/drivers/pinctrl/intel/pinctrl-broxton.c
index 5979d38c46b2..59cb7a6fc5be 100644
--- a/drivers/pinctrl/intel/pinctrl-broxton.c
+++ b/drivers/pinctrl/intel/pinctrl-broxton.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * Intel Broxton SoC pinctrl/GPIO driver 2 * Intel Broxton SoC pinctrl/GPIO driver
3 * 3 *
4 * Copyright (C) 2015, Intel Corporation 4 * Copyright (C) 2015, 2016 Intel Corporation
5 * Author: Mika Westerberg <mika.westerberg@linux.intel.com> 5 * Author: Mika Westerberg <mika.westerberg@linux.intel.com>
6 * 6 *
7 * This program is free software; you can redistribute it and/or modify 7 * This program is free software; you can redistribute it and/or modify
@@ -1003,29 +1003,46 @@ static const struct acpi_device_id bxt_pinctrl_acpi_match[] = {
1003}; 1003};
1004MODULE_DEVICE_TABLE(acpi, bxt_pinctrl_acpi_match); 1004MODULE_DEVICE_TABLE(acpi, bxt_pinctrl_acpi_match);
1005 1005
1006static const struct platform_device_id bxt_pinctrl_platform_ids[] = {
1007 { "apl-pinctrl", (kernel_ulong_t)&apl_pinctrl_soc_data },
1008 { "broxton-pinctrl", (kernel_ulong_t)&bxt_pinctrl_soc_data },
1009 { },
1010};
1011
1006static int bxt_pinctrl_probe(struct platform_device *pdev) 1012static int bxt_pinctrl_probe(struct platform_device *pdev)
1007{ 1013{
1008 const struct intel_pinctrl_soc_data *soc_data = NULL; 1014 const struct intel_pinctrl_soc_data *soc_data = NULL;
1009 const struct intel_pinctrl_soc_data **soc_table; 1015 const struct intel_pinctrl_soc_data **soc_table;
1010 const struct acpi_device_id *id;
1011 struct acpi_device *adev; 1016 struct acpi_device *adev;
1012 int i; 1017 int i;
1013 1018
1014 adev = ACPI_COMPANION(&pdev->dev); 1019 adev = ACPI_COMPANION(&pdev->dev);
1015 if (!adev) 1020 if (adev) {
1016 return -ENODEV; 1021 const struct acpi_device_id *id;
1017 1022
1018 id = acpi_match_device(bxt_pinctrl_acpi_match, &pdev->dev); 1023 id = acpi_match_device(bxt_pinctrl_acpi_match, &pdev->dev);
1019 if (!id) 1024 if (!id)
1020 return -ENODEV; 1025 return -ENODEV;
1021 1026
1022 soc_table = (const struct intel_pinctrl_soc_data **)id->driver_data; 1027 soc_table = (const struct intel_pinctrl_soc_data **)
1028 id->driver_data;
1023 1029
1024 for (i = 0; soc_table[i]; i++) { 1030 for (i = 0; soc_table[i]; i++) {
1025 if (!strcmp(adev->pnp.unique_id, soc_table[i]->uid)) { 1031 if (!strcmp(adev->pnp.unique_id, soc_table[i]->uid)) {
1026 soc_data = soc_table[i]; 1032 soc_data = soc_table[i];
1027 break; 1033 break;
1034 }
1028 } 1035 }
1036 } else {
1037 const struct platform_device_id *pid;
1038
1039 pid = platform_get_device_id(pdev);
1040 if (!pid)
1041 return -ENODEV;
1042
1043 soc_table = (const struct intel_pinctrl_soc_data **)
1044 pid->driver_data;
1045 soc_data = soc_table[pdev->id];
1029 } 1046 }
1030 1047
1031 if (!soc_data) 1048 if (!soc_data)
@@ -1047,6 +1064,7 @@ static struct platform_driver bxt_pinctrl_driver = {
1047 .acpi_match_table = bxt_pinctrl_acpi_match, 1064 .acpi_match_table = bxt_pinctrl_acpi_match,
1048 .pm = &bxt_pinctrl_pm_ops, 1065 .pm = &bxt_pinctrl_pm_ops,
1049 }, 1066 },
1067 .id_table = bxt_pinctrl_platform_ids,
1050}; 1068};
1051 1069
1052static int __init bxt_pinctrl_init(void) 1070static int __init bxt_pinctrl_init(void)
@@ -1064,3 +1082,4 @@ module_exit(bxt_pinctrl_exit);
1064MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>"); 1082MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>");
1065MODULE_DESCRIPTION("Intel Broxton SoC pinctrl/GPIO driver"); 1083MODULE_DESCRIPTION("Intel Broxton SoC pinctrl/GPIO driver");
1066MODULE_LICENSE("GPL v2"); 1084MODULE_LICENSE("GPL v2");
1085MODULE_ALIAS("platform:broxton-pinctrl");
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
index ac4f564f1c3e..5749a4eee746 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -160,7 +160,6 @@ struct chv_pin_context {
160 * @pctldev: Pointer to the pin controller device 160 * @pctldev: Pointer to the pin controller device
161 * @chip: GPIO chip in this pin controller 161 * @chip: GPIO chip in this pin controller
162 * @regs: MMIO registers 162 * @regs: MMIO registers
163 * @lock: Lock to serialize register accesses
164 * @intr_lines: Stores mapping between 16 HW interrupt wires and GPIO 163 * @intr_lines: Stores mapping between 16 HW interrupt wires and GPIO
165 * offset (in GPIO number space) 164 * offset (in GPIO number space)
166 * @community: Community this pinctrl instance represents 165 * @community: Community this pinctrl instance represents
@@ -174,7 +173,6 @@ struct chv_pinctrl {
174 struct pinctrl_dev *pctldev; 173 struct pinctrl_dev *pctldev;
175 struct gpio_chip chip; 174 struct gpio_chip chip;
176 void __iomem *regs; 175 void __iomem *regs;
177 raw_spinlock_t lock;
178 unsigned intr_lines[16]; 176 unsigned intr_lines[16];
179 const struct chv_community *community; 177 const struct chv_community *community;
180 u32 saved_intmask; 178 u32 saved_intmask;
@@ -657,6 +655,17 @@ static const struct chv_community *chv_communities[] = {
657 &southeast_community, 655 &southeast_community,
658}; 656};
659 657
658/*
659 * Lock to serialize register accesses
660 *
661 * Due to a silicon issue, a shared lock must be used to prevent
662 * concurrent accesses across the 4 GPIO controllers.
663 *
664 * See Intel Atom Z8000 Processor Series Specification Update (Rev. 005),
665 * errata #CHT34, for further information.
666 */
667static DEFINE_RAW_SPINLOCK(chv_lock);
668
660static void __iomem *chv_padreg(struct chv_pinctrl *pctrl, unsigned offset, 669static void __iomem *chv_padreg(struct chv_pinctrl *pctrl, unsigned offset,
661 unsigned reg) 670 unsigned reg)
662{ 671{
@@ -718,13 +727,13 @@ static void chv_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s,
718 u32 ctrl0, ctrl1; 727 u32 ctrl0, ctrl1;
719 bool locked; 728 bool locked;
720 729
721 raw_spin_lock_irqsave(&pctrl->lock, flags); 730 raw_spin_lock_irqsave(&chv_lock, flags);
722 731
723 ctrl0 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0)); 732 ctrl0 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0));
724 ctrl1 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL1)); 733 ctrl1 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL1));
725 locked = chv_pad_locked(pctrl, offset); 734 locked = chv_pad_locked(pctrl, offset);
726 735
727 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 736 raw_spin_unlock_irqrestore(&chv_lock, flags);
728 737
729 if (ctrl0 & CHV_PADCTRL0_GPIOEN) { 738 if (ctrl0 & CHV_PADCTRL0_GPIOEN) {
730 seq_puts(s, "GPIO "); 739 seq_puts(s, "GPIO ");
@@ -787,14 +796,14 @@ static int chv_pinmux_set_mux(struct pinctrl_dev *pctldev, unsigned function,
787 796
788 grp = &pctrl->community->groups[group]; 797 grp = &pctrl->community->groups[group];
789 798
790 raw_spin_lock_irqsave(&pctrl->lock, flags); 799 raw_spin_lock_irqsave(&chv_lock, flags);
791 800
792 /* Check first that the pad is not locked */ 801 /* Check first that the pad is not locked */
793 for (i = 0; i < grp->npins; i++) { 802 for (i = 0; i < grp->npins; i++) {
794 if (chv_pad_locked(pctrl, grp->pins[i])) { 803 if (chv_pad_locked(pctrl, grp->pins[i])) {
795 dev_warn(pctrl->dev, "unable to set mode for locked pin %u\n", 804 dev_warn(pctrl->dev, "unable to set mode for locked pin %u\n",
796 grp->pins[i]); 805 grp->pins[i]);
797 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 806 raw_spin_unlock_irqrestore(&chv_lock, flags);
798 return -EBUSY; 807 return -EBUSY;
799 } 808 }
800 } 809 }
@@ -837,7 +846,7 @@ static int chv_pinmux_set_mux(struct pinctrl_dev *pctldev, unsigned function,
837 pin, altfunc->mode, altfunc->invert_oe ? "" : "not "); 846 pin, altfunc->mode, altfunc->invert_oe ? "" : "not ");
838 } 847 }
839 848
840 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 849 raw_spin_unlock_irqrestore(&chv_lock, flags);
841 850
842 return 0; 851 return 0;
843} 852}
@@ -851,13 +860,13 @@ static int chv_gpio_request_enable(struct pinctrl_dev *pctldev,
851 void __iomem *reg; 860 void __iomem *reg;
852 u32 value; 861 u32 value;
853 862
854 raw_spin_lock_irqsave(&pctrl->lock, flags); 863 raw_spin_lock_irqsave(&chv_lock, flags);
855 864
856 if (chv_pad_locked(pctrl, offset)) { 865 if (chv_pad_locked(pctrl, offset)) {
857 value = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0)); 866 value = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0));
858 if (!(value & CHV_PADCTRL0_GPIOEN)) { 867 if (!(value & CHV_PADCTRL0_GPIOEN)) {
859 /* Locked so cannot enable */ 868 /* Locked so cannot enable */
860 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 869 raw_spin_unlock_irqrestore(&chv_lock, flags);
861 return -EBUSY; 870 return -EBUSY;
862 } 871 }
863 } else { 872 } else {
@@ -897,7 +906,7 @@ static int chv_gpio_request_enable(struct pinctrl_dev *pctldev,
897 chv_writel(value, reg); 906 chv_writel(value, reg);
898 } 907 }
899 908
900 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 909 raw_spin_unlock_irqrestore(&chv_lock, flags);
901 910
902 return 0; 911 return 0;
903} 912}
@@ -911,13 +920,13 @@ static void chv_gpio_disable_free(struct pinctrl_dev *pctldev,
911 void __iomem *reg; 920 void __iomem *reg;
912 u32 value; 921 u32 value;
913 922
914 raw_spin_lock_irqsave(&pctrl->lock, flags); 923 raw_spin_lock_irqsave(&chv_lock, flags);
915 924
916 reg = chv_padreg(pctrl, offset, CHV_PADCTRL0); 925 reg = chv_padreg(pctrl, offset, CHV_PADCTRL0);
917 value = readl(reg) & ~CHV_PADCTRL0_GPIOEN; 926 value = readl(reg) & ~CHV_PADCTRL0_GPIOEN;
918 chv_writel(value, reg); 927 chv_writel(value, reg);
919 928
920 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 929 raw_spin_unlock_irqrestore(&chv_lock, flags);
921} 930}
922 931
923static int chv_gpio_set_direction(struct pinctrl_dev *pctldev, 932static int chv_gpio_set_direction(struct pinctrl_dev *pctldev,
@@ -929,7 +938,7 @@ static int chv_gpio_set_direction(struct pinctrl_dev *pctldev,
929 unsigned long flags; 938 unsigned long flags;
930 u32 ctrl0; 939 u32 ctrl0;
931 940
932 raw_spin_lock_irqsave(&pctrl->lock, flags); 941 raw_spin_lock_irqsave(&chv_lock, flags);
933 942
934 ctrl0 = readl(reg) & ~CHV_PADCTRL0_GPIOCFG_MASK; 943 ctrl0 = readl(reg) & ~CHV_PADCTRL0_GPIOCFG_MASK;
935 if (input) 944 if (input)
@@ -938,7 +947,7 @@ static int chv_gpio_set_direction(struct pinctrl_dev *pctldev,
938 ctrl0 |= CHV_PADCTRL0_GPIOCFG_GPO << CHV_PADCTRL0_GPIOCFG_SHIFT; 947 ctrl0 |= CHV_PADCTRL0_GPIOCFG_GPO << CHV_PADCTRL0_GPIOCFG_SHIFT;
939 chv_writel(ctrl0, reg); 948 chv_writel(ctrl0, reg);
940 949
941 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 950 raw_spin_unlock_irqrestore(&chv_lock, flags);
942 951
943 return 0; 952 return 0;
944} 953}
@@ -963,10 +972,10 @@ static int chv_config_get(struct pinctrl_dev *pctldev, unsigned pin,
963 u16 arg = 0; 972 u16 arg = 0;
964 u32 term; 973 u32 term;
965 974
966 raw_spin_lock_irqsave(&pctrl->lock, flags); 975 raw_spin_lock_irqsave(&chv_lock, flags);
967 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 976 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
968 ctrl1 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL1)); 977 ctrl1 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL1));
969 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 978 raw_spin_unlock_irqrestore(&chv_lock, flags);
970 979
971 term = (ctrl0 & CHV_PADCTRL0_TERM_MASK) >> CHV_PADCTRL0_TERM_SHIFT; 980 term = (ctrl0 & CHV_PADCTRL0_TERM_MASK) >> CHV_PADCTRL0_TERM_SHIFT;
972 981
@@ -1040,7 +1049,7 @@ static int chv_config_set_pull(struct chv_pinctrl *pctrl, unsigned pin,
1040 unsigned long flags; 1049 unsigned long flags;
1041 u32 ctrl0, pull; 1050 u32 ctrl0, pull;
1042 1051
1043 raw_spin_lock_irqsave(&pctrl->lock, flags); 1052 raw_spin_lock_irqsave(&chv_lock, flags);
1044 ctrl0 = readl(reg); 1053 ctrl0 = readl(reg);
1045 1054
1046 switch (param) { 1055 switch (param) {
@@ -1063,7 +1072,7 @@ static int chv_config_set_pull(struct chv_pinctrl *pctrl, unsigned pin,
1063 pull = CHV_PADCTRL0_TERM_20K << CHV_PADCTRL0_TERM_SHIFT; 1072 pull = CHV_PADCTRL0_TERM_20K << CHV_PADCTRL0_TERM_SHIFT;
1064 break; 1073 break;
1065 default: 1074 default:
1066 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1075 raw_spin_unlock_irqrestore(&chv_lock, flags);
1067 return -EINVAL; 1076 return -EINVAL;
1068 } 1077 }
1069 1078
@@ -1081,7 +1090,7 @@ static int chv_config_set_pull(struct chv_pinctrl *pctrl, unsigned pin,
1081 pull = CHV_PADCTRL0_TERM_20K << CHV_PADCTRL0_TERM_SHIFT; 1090 pull = CHV_PADCTRL0_TERM_20K << CHV_PADCTRL0_TERM_SHIFT;
1082 break; 1091 break;
1083 default: 1092 default:
1084 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1093 raw_spin_unlock_irqrestore(&chv_lock, flags);
1085 return -EINVAL; 1094 return -EINVAL;
1086 } 1095 }
1087 1096
@@ -1089,12 +1098,33 @@ static int chv_config_set_pull(struct chv_pinctrl *pctrl, unsigned pin,
1089 break; 1098 break;
1090 1099
1091 default: 1100 default:
1092 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1101 raw_spin_unlock_irqrestore(&chv_lock, flags);
1093 return -EINVAL; 1102 return -EINVAL;
1094 } 1103 }
1095 1104
1096 chv_writel(ctrl0, reg); 1105 chv_writel(ctrl0, reg);
1097 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1106 raw_spin_unlock_irqrestore(&chv_lock, flags);
1107
1108 return 0;
1109}
1110
1111static int chv_config_set_oden(struct chv_pinctrl *pctrl, unsigned int pin,
1112 bool enable)
1113{
1114 void __iomem *reg = chv_padreg(pctrl, pin, CHV_PADCTRL1);
1115 unsigned long flags;
1116 u32 ctrl1;
1117
1118 raw_spin_lock_irqsave(&chv_lock, flags);
1119 ctrl1 = readl(reg);
1120
1121 if (enable)
1122 ctrl1 |= CHV_PADCTRL1_ODEN;
1123 else
1124 ctrl1 &= ~CHV_PADCTRL1_ODEN;
1125
1126 chv_writel(ctrl1, reg);
1127 raw_spin_unlock_irqrestore(&chv_lock, flags);
1098 1128
1099 return 0; 1129 return 0;
1100} 1130}
@@ -1123,6 +1153,18 @@ static int chv_config_set(struct pinctrl_dev *pctldev, unsigned pin,
1123 return ret; 1153 return ret;
1124 break; 1154 break;
1125 1155
1156 case PIN_CONFIG_DRIVE_PUSH_PULL:
1157 ret = chv_config_set_oden(pctrl, pin, false);
1158 if (ret)
1159 return ret;
1160 break;
1161
1162 case PIN_CONFIG_DRIVE_OPEN_DRAIN:
1163 ret = chv_config_set_oden(pctrl, pin, true);
1164 if (ret)
1165 return ret;
1166 break;
1167
1126 default: 1168 default:
1127 return -ENOTSUPP; 1169 return -ENOTSUPP;
1128 } 1170 }
@@ -1134,10 +1176,52 @@ static int chv_config_set(struct pinctrl_dev *pctldev, unsigned pin,
1134 return 0; 1176 return 0;
1135} 1177}
1136 1178
1179static int chv_config_group_get(struct pinctrl_dev *pctldev,
1180 unsigned int group,
1181 unsigned long *config)
1182{
1183 const unsigned int *pins;
1184 unsigned int npins;
1185 int ret;
1186
1187 ret = chv_get_group_pins(pctldev, group, &pins, &npins);
1188 if (ret)
1189 return ret;
1190
1191 ret = chv_config_get(pctldev, pins[0], config);
1192 if (ret)
1193 return ret;
1194
1195 return 0;
1196}
1197
1198static int chv_config_group_set(struct pinctrl_dev *pctldev,
1199 unsigned int group, unsigned long *configs,
1200 unsigned int num_configs)
1201{
1202 const unsigned int *pins;
1203 unsigned int npins;
1204 int i, ret;
1205
1206 ret = chv_get_group_pins(pctldev, group, &pins, &npins);
1207 if (ret)
1208 return ret;
1209
1210 for (i = 0; i < npins; i++) {
1211 ret = chv_config_set(pctldev, pins[i], configs, num_configs);
1212 if (ret)
1213 return ret;
1214 }
1215
1216 return 0;
1217}
1218
1137static const struct pinconf_ops chv_pinconf_ops = { 1219static const struct pinconf_ops chv_pinconf_ops = {
1138 .is_generic = true, 1220 .is_generic = true,
1139 .pin_config_set = chv_config_set, 1221 .pin_config_set = chv_config_set,
1140 .pin_config_get = chv_config_get, 1222 .pin_config_get = chv_config_get,
1223 .pin_config_group_get = chv_config_group_get,
1224 .pin_config_group_set = chv_config_group_set,
1141}; 1225};
1142 1226
1143static struct pinctrl_desc chv_pinctrl_desc = { 1227static struct pinctrl_desc chv_pinctrl_desc = {
@@ -1160,9 +1244,9 @@ static int chv_gpio_get(struct gpio_chip *chip, unsigned offset)
1160 unsigned long flags; 1244 unsigned long flags;
1161 u32 ctrl0, cfg; 1245 u32 ctrl0, cfg;
1162 1246
1163 raw_spin_lock_irqsave(&pctrl->lock, flags); 1247 raw_spin_lock_irqsave(&chv_lock, flags);
1164 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1248 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
1165 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1249 raw_spin_unlock_irqrestore(&chv_lock, flags);
1166 1250
1167 cfg = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK; 1251 cfg = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK;
1168 cfg >>= CHV_PADCTRL0_GPIOCFG_SHIFT; 1252 cfg >>= CHV_PADCTRL0_GPIOCFG_SHIFT;
@@ -1180,7 +1264,7 @@ static void chv_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
1180 void __iomem *reg; 1264 void __iomem *reg;
1181 u32 ctrl0; 1265 u32 ctrl0;
1182 1266
1183 raw_spin_lock_irqsave(&pctrl->lock, flags); 1267 raw_spin_lock_irqsave(&chv_lock, flags);
1184 1268
1185 reg = chv_padreg(pctrl, pin, CHV_PADCTRL0); 1269 reg = chv_padreg(pctrl, pin, CHV_PADCTRL0);
1186 ctrl0 = readl(reg); 1270 ctrl0 = readl(reg);
@@ -1192,7 +1276,7 @@ static void chv_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
1192 1276
1193 chv_writel(ctrl0, reg); 1277 chv_writel(ctrl0, reg);
1194 1278
1195 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1279 raw_spin_unlock_irqrestore(&chv_lock, flags);
1196} 1280}
1197 1281
1198static int chv_gpio_get_direction(struct gpio_chip *chip, unsigned offset) 1282static int chv_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
@@ -1202,9 +1286,9 @@ static int chv_gpio_get_direction(struct gpio_chip *chip, unsigned offset)
1202 u32 ctrl0, direction; 1286 u32 ctrl0, direction;
1203 unsigned long flags; 1287 unsigned long flags;
1204 1288
1205 raw_spin_lock_irqsave(&pctrl->lock, flags); 1289 raw_spin_lock_irqsave(&chv_lock, flags);
1206 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1290 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
1207 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1291 raw_spin_unlock_irqrestore(&chv_lock, flags);
1208 1292
1209 direction = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK; 1293 direction = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK;
1210 direction >>= CHV_PADCTRL0_GPIOCFG_SHIFT; 1294 direction >>= CHV_PADCTRL0_GPIOCFG_SHIFT;
@@ -1242,14 +1326,14 @@ static void chv_gpio_irq_ack(struct irq_data *d)
1242 int pin = chv_gpio_offset_to_pin(pctrl, irqd_to_hwirq(d)); 1326 int pin = chv_gpio_offset_to_pin(pctrl, irqd_to_hwirq(d));
1243 u32 intr_line; 1327 u32 intr_line;
1244 1328
1245 raw_spin_lock(&pctrl->lock); 1329 raw_spin_lock(&chv_lock);
1246 1330
1247 intr_line = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1331 intr_line = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
1248 intr_line &= CHV_PADCTRL0_INTSEL_MASK; 1332 intr_line &= CHV_PADCTRL0_INTSEL_MASK;
1249 intr_line >>= CHV_PADCTRL0_INTSEL_SHIFT; 1333 intr_line >>= CHV_PADCTRL0_INTSEL_SHIFT;
1250 chv_writel(BIT(intr_line), pctrl->regs + CHV_INTSTAT); 1334 chv_writel(BIT(intr_line), pctrl->regs + CHV_INTSTAT);
1251 1335
1252 raw_spin_unlock(&pctrl->lock); 1336 raw_spin_unlock(&chv_lock);
1253} 1337}
1254 1338
1255static void chv_gpio_irq_mask_unmask(struct irq_data *d, bool mask) 1339static void chv_gpio_irq_mask_unmask(struct irq_data *d, bool mask)
@@ -1260,7 +1344,7 @@ static void chv_gpio_irq_mask_unmask(struct irq_data *d, bool mask)
1260 u32 value, intr_line; 1344 u32 value, intr_line;
1261 unsigned long flags; 1345 unsigned long flags;
1262 1346
1263 raw_spin_lock_irqsave(&pctrl->lock, flags); 1347 raw_spin_lock_irqsave(&chv_lock, flags);
1264 1348
1265 intr_line = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1349 intr_line = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
1266 intr_line &= CHV_PADCTRL0_INTSEL_MASK; 1350 intr_line &= CHV_PADCTRL0_INTSEL_MASK;
@@ -1273,7 +1357,7 @@ static void chv_gpio_irq_mask_unmask(struct irq_data *d, bool mask)
1273 value |= BIT(intr_line); 1357 value |= BIT(intr_line);
1274 chv_writel(value, pctrl->regs + CHV_INTMASK); 1358 chv_writel(value, pctrl->regs + CHV_INTMASK);
1275 1359
1276 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1360 raw_spin_unlock_irqrestore(&chv_lock, flags);
1277} 1361}
1278 1362
1279static void chv_gpio_irq_mask(struct irq_data *d) 1363static void chv_gpio_irq_mask(struct irq_data *d)
@@ -1307,7 +1391,7 @@ static unsigned chv_gpio_irq_startup(struct irq_data *d)
1307 unsigned long flags; 1391 unsigned long flags;
1308 u32 intsel, value; 1392 u32 intsel, value;
1309 1393
1310 raw_spin_lock_irqsave(&pctrl->lock, flags); 1394 raw_spin_lock_irqsave(&chv_lock, flags);
1311 intsel = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1395 intsel = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0));
1312 intsel &= CHV_PADCTRL0_INTSEL_MASK; 1396 intsel &= CHV_PADCTRL0_INTSEL_MASK;
1313 intsel >>= CHV_PADCTRL0_INTSEL_SHIFT; 1397 intsel >>= CHV_PADCTRL0_INTSEL_SHIFT;
@@ -1322,7 +1406,7 @@ static unsigned chv_gpio_irq_startup(struct irq_data *d)
1322 irq_set_handler_locked(d, handler); 1406 irq_set_handler_locked(d, handler);
1323 pctrl->intr_lines[intsel] = offset; 1407 pctrl->intr_lines[intsel] = offset;
1324 } 1408 }
1325 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1409 raw_spin_unlock_irqrestore(&chv_lock, flags);
1326 } 1410 }
1327 1411
1328 chv_gpio_irq_unmask(d); 1412 chv_gpio_irq_unmask(d);
@@ -1338,7 +1422,7 @@ static int chv_gpio_irq_type(struct irq_data *d, unsigned type)
1338 unsigned long flags; 1422 unsigned long flags;
1339 u32 value; 1423 u32 value;
1340 1424
1341 raw_spin_lock_irqsave(&pctrl->lock, flags); 1425 raw_spin_lock_irqsave(&chv_lock, flags);
1342 1426
1343 /* 1427 /*
1344 * Pins which can be used as shared interrupt are configured in 1428 * Pins which can be used as shared interrupt are configured in
@@ -1387,7 +1471,7 @@ static int chv_gpio_irq_type(struct irq_data *d, unsigned type)
1387 else if (type & IRQ_TYPE_LEVEL_MASK) 1471 else if (type & IRQ_TYPE_LEVEL_MASK)
1388 irq_set_handler_locked(d, handle_level_irq); 1472 irq_set_handler_locked(d, handle_level_irq);
1389 1473
1390 raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1474 raw_spin_unlock_irqrestore(&chv_lock, flags);
1391 1475
1392 return 0; 1476 return 0;
1393} 1477}
@@ -1499,7 +1583,6 @@ static int chv_pinctrl_probe(struct platform_device *pdev)
1499 if (i == ARRAY_SIZE(chv_communities)) 1583 if (i == ARRAY_SIZE(chv_communities))
1500 return -ENODEV; 1584 return -ENODEV;
1501 1585
1502 raw_spin_lock_init(&pctrl->lock);
1503 pctrl->dev = &pdev->dev; 1586 pctrl->dev = &pdev->dev;
1504 1587
1505#ifdef CONFIG_PM_SLEEP 1588#ifdef CONFIG_PM_SLEEP
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c
index 3584e50fa2c6..257cab129692 100644
--- a/drivers/pinctrl/intel/pinctrl-intel.c
+++ b/drivers/pinctrl/intel/pinctrl-intel.c
@@ -89,7 +89,7 @@ struct intel_pinctrl_context {
89 */ 89 */
90struct intel_pinctrl { 90struct intel_pinctrl {
91 struct device *dev; 91 struct device *dev;
92 spinlock_t lock; 92 raw_spinlock_t lock;
93 struct pinctrl_desc pctldesc; 93 struct pinctrl_desc pctldesc;
94 struct pinctrl_dev *pctldev; 94 struct pinctrl_dev *pctldev;
95 struct gpio_chip chip; 95 struct gpio_chip chip;
@@ -318,7 +318,7 @@ static int intel_pinmux_set_mux(struct pinctrl_dev *pctldev, unsigned function,
318 unsigned long flags; 318 unsigned long flags;
319 int i; 319 int i;
320 320
321 spin_lock_irqsave(&pctrl->lock, flags); 321 raw_spin_lock_irqsave(&pctrl->lock, flags);
322 322
323 /* 323 /*
324 * All pins in the groups needs to be accessible and writable 324 * All pins in the groups needs to be accessible and writable
@@ -326,7 +326,7 @@ static int intel_pinmux_set_mux(struct pinctrl_dev *pctldev, unsigned function,
326 */ 326 */
327 for (i = 0; i < grp->npins; i++) { 327 for (i = 0; i < grp->npins; i++) {
328 if (!intel_pad_usable(pctrl, grp->pins[i])) { 328 if (!intel_pad_usable(pctrl, grp->pins[i])) {
329 spin_unlock_irqrestore(&pctrl->lock, flags); 329 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
330 return -EBUSY; 330 return -EBUSY;
331 } 331 }
332 } 332 }
@@ -345,7 +345,7 @@ static int intel_pinmux_set_mux(struct pinctrl_dev *pctldev, unsigned function,
345 writel(value, padcfg0); 345 writel(value, padcfg0);
346 } 346 }
347 347
348 spin_unlock_irqrestore(&pctrl->lock, flags); 348 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
349 349
350 return 0; 350 return 0;
351} 351}
@@ -359,10 +359,10 @@ static int intel_gpio_request_enable(struct pinctrl_dev *pctldev,
359 unsigned long flags; 359 unsigned long flags;
360 u32 value; 360 u32 value;
361 361
362 spin_lock_irqsave(&pctrl->lock, flags); 362 raw_spin_lock_irqsave(&pctrl->lock, flags);
363 363
364 if (!intel_pad_usable(pctrl, pin)) { 364 if (!intel_pad_usable(pctrl, pin)) {
365 spin_unlock_irqrestore(&pctrl->lock, flags); 365 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
366 return -EBUSY; 366 return -EBUSY;
367 } 367 }
368 368
@@ -377,7 +377,7 @@ static int intel_gpio_request_enable(struct pinctrl_dev *pctldev,
377 value |= PADCFG0_GPIOTXDIS; 377 value |= PADCFG0_GPIOTXDIS;
378 writel(value, padcfg0); 378 writel(value, padcfg0);
379 379
380 spin_unlock_irqrestore(&pctrl->lock, flags); 380 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
381 381
382 return 0; 382 return 0;
383} 383}
@@ -391,7 +391,7 @@ static int intel_gpio_set_direction(struct pinctrl_dev *pctldev,
391 unsigned long flags; 391 unsigned long flags;
392 u32 value; 392 u32 value;
393 393
394 spin_lock_irqsave(&pctrl->lock, flags); 394 raw_spin_lock_irqsave(&pctrl->lock, flags);
395 395
396 padcfg0 = intel_get_padcfg(pctrl, pin, PADCFG0); 396 padcfg0 = intel_get_padcfg(pctrl, pin, PADCFG0);
397 397
@@ -402,7 +402,7 @@ static int intel_gpio_set_direction(struct pinctrl_dev *pctldev,
402 value &= ~PADCFG0_GPIOTXDIS; 402 value &= ~PADCFG0_GPIOTXDIS;
403 writel(value, padcfg0); 403 writel(value, padcfg0);
404 404
405 spin_unlock_irqrestore(&pctrl->lock, flags); 405 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
406 406
407 return 0; 407 return 0;
408} 408}
@@ -490,7 +490,7 @@ static int intel_config_set_pull(struct intel_pinctrl *pctrl, unsigned pin,
490 int ret = 0; 490 int ret = 0;
491 u32 value; 491 u32 value;
492 492
493 spin_lock_irqsave(&pctrl->lock, flags); 493 raw_spin_lock_irqsave(&pctrl->lock, flags);
494 494
495 padcfg1 = intel_get_padcfg(pctrl, pin, PADCFG1); 495 padcfg1 = intel_get_padcfg(pctrl, pin, PADCFG1);
496 value = readl(padcfg1); 496 value = readl(padcfg1);
@@ -544,7 +544,7 @@ static int intel_config_set_pull(struct intel_pinctrl *pctrl, unsigned pin,
544 if (!ret) 544 if (!ret)
545 writel(value, padcfg1); 545 writel(value, padcfg1);
546 546
547 spin_unlock_irqrestore(&pctrl->lock, flags); 547 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
548 548
549 return ret; 549 return ret;
550} 550}
@@ -611,14 +611,14 @@ static void intel_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
611 unsigned long flags; 611 unsigned long flags;
612 u32 padcfg0; 612 u32 padcfg0;
613 613
614 spin_lock_irqsave(&pctrl->lock, flags); 614 raw_spin_lock_irqsave(&pctrl->lock, flags);
615 padcfg0 = readl(reg); 615 padcfg0 = readl(reg);
616 if (value) 616 if (value)
617 padcfg0 |= PADCFG0_GPIOTXSTATE; 617 padcfg0 |= PADCFG0_GPIOTXSTATE;
618 else 618 else
619 padcfg0 &= ~PADCFG0_GPIOTXSTATE; 619 padcfg0 &= ~PADCFG0_GPIOTXSTATE;
620 writel(padcfg0, reg); 620 writel(padcfg0, reg);
621 spin_unlock_irqrestore(&pctrl->lock, flags); 621 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
622 } 622 }
623} 623}
624 624
@@ -651,7 +651,7 @@ static void intel_gpio_irq_ack(struct irq_data *d)
651 const struct intel_community *community; 651 const struct intel_community *community;
652 unsigned pin = irqd_to_hwirq(d); 652 unsigned pin = irqd_to_hwirq(d);
653 653
654 spin_lock(&pctrl->lock); 654 raw_spin_lock(&pctrl->lock);
655 655
656 community = intel_get_community(pctrl, pin); 656 community = intel_get_community(pctrl, pin);
657 if (community) { 657 if (community) {
@@ -662,7 +662,7 @@ static void intel_gpio_irq_ack(struct irq_data *d)
662 writel(BIT(gpp_offset), community->regs + GPI_IS + gpp * 4); 662 writel(BIT(gpp_offset), community->regs + GPI_IS + gpp * 4);
663 } 663 }
664 664
665 spin_unlock(&pctrl->lock); 665 raw_spin_unlock(&pctrl->lock);
666} 666}
667 667
668static void intel_gpio_irq_enable(struct irq_data *d) 668static void intel_gpio_irq_enable(struct irq_data *d)
@@ -673,7 +673,7 @@ static void intel_gpio_irq_enable(struct irq_data *d)
673 unsigned pin = irqd_to_hwirq(d); 673 unsigned pin = irqd_to_hwirq(d);
674 unsigned long flags; 674 unsigned long flags;
675 675
676 spin_lock_irqsave(&pctrl->lock, flags); 676 raw_spin_lock_irqsave(&pctrl->lock, flags);
677 677
678 community = intel_get_community(pctrl, pin); 678 community = intel_get_community(pctrl, pin);
679 if (community) { 679 if (community) {
@@ -691,7 +691,7 @@ static void intel_gpio_irq_enable(struct irq_data *d)
691 writel(value, community->regs + community->ie_offset + gpp * 4); 691 writel(value, community->regs + community->ie_offset + gpp * 4);
692 } 692 }
693 693
694 spin_unlock_irqrestore(&pctrl->lock, flags); 694 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
695} 695}
696 696
697static void intel_gpio_irq_mask_unmask(struct irq_data *d, bool mask) 697static void intel_gpio_irq_mask_unmask(struct irq_data *d, bool mask)
@@ -702,7 +702,7 @@ static void intel_gpio_irq_mask_unmask(struct irq_data *d, bool mask)
702 unsigned pin = irqd_to_hwirq(d); 702 unsigned pin = irqd_to_hwirq(d);
703 unsigned long flags; 703 unsigned long flags;
704 704
705 spin_lock_irqsave(&pctrl->lock, flags); 705 raw_spin_lock_irqsave(&pctrl->lock, flags);
706 706
707 community = intel_get_community(pctrl, pin); 707 community = intel_get_community(pctrl, pin);
708 if (community) { 708 if (community) {
@@ -721,7 +721,7 @@ static void intel_gpio_irq_mask_unmask(struct irq_data *d, bool mask)
721 writel(value, reg); 721 writel(value, reg);
722 } 722 }
723 723
724 spin_unlock_irqrestore(&pctrl->lock, flags); 724 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
725} 725}
726 726
727static void intel_gpio_irq_mask(struct irq_data *d) 727static void intel_gpio_irq_mask(struct irq_data *d)
@@ -757,7 +757,7 @@ static int intel_gpio_irq_type(struct irq_data *d, unsigned type)
757 return -EPERM; 757 return -EPERM;
758 } 758 }
759 759
760 spin_lock_irqsave(&pctrl->lock, flags); 760 raw_spin_lock_irqsave(&pctrl->lock, flags);
761 761
762 value = readl(reg); 762 value = readl(reg);
763 763
@@ -784,7 +784,7 @@ static int intel_gpio_irq_type(struct irq_data *d, unsigned type)
784 else if (type & IRQ_TYPE_LEVEL_MASK) 784 else if (type & IRQ_TYPE_LEVEL_MASK)
785 irq_set_handler_locked(d, handle_level_irq); 785 irq_set_handler_locked(d, handle_level_irq);
786 786
787 spin_unlock_irqrestore(&pctrl->lock, flags); 787 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
788 788
789 return 0; 789 return 0;
790} 790}
@@ -796,12 +796,15 @@ static int intel_gpio_irq_wake(struct irq_data *d, unsigned int on)
796 const struct intel_community *community; 796 const struct intel_community *community;
797 unsigned pin = irqd_to_hwirq(d); 797 unsigned pin = irqd_to_hwirq(d);
798 unsigned padno, gpp, gpp_offset; 798 unsigned padno, gpp, gpp_offset;
799 unsigned long flags;
799 u32 gpe_en; 800 u32 gpe_en;
800 801
801 community = intel_get_community(pctrl, pin); 802 community = intel_get_community(pctrl, pin);
802 if (!community) 803 if (!community)
803 return -EINVAL; 804 return -EINVAL;
804 805
806 raw_spin_lock_irqsave(&pctrl->lock, flags);
807
805 padno = pin_to_padno(community, pin); 808 padno = pin_to_padno(community, pin);
806 gpp = padno / community->gpp_size; 809 gpp = padno / community->gpp_size;
807 gpp_offset = padno % community->gpp_size; 810 gpp_offset = padno % community->gpp_size;
@@ -821,6 +824,8 @@ static int intel_gpio_irq_wake(struct irq_data *d, unsigned int on)
821 gpe_en &= ~BIT(gpp_offset); 824 gpe_en &= ~BIT(gpp_offset);
822 writel(gpe_en, community->regs + GPI_GPE_EN + gpp * 4); 825 writel(gpe_en, community->regs + GPI_GPE_EN + gpp * 4);
823 826
827 raw_spin_unlock_irqrestore(&pctrl->lock, flags);
828
824 dev_dbg(pctrl->dev, "%sable wake for pin %u\n", on ? "en" : "dis", pin); 829 dev_dbg(pctrl->dev, "%sable wake for pin %u\n", on ? "en" : "dis", pin);
825 return 0; 830 return 0;
826} 831}
@@ -919,7 +924,8 @@ static int intel_gpio_probe(struct intel_pinctrl *pctrl, int irq)
919 * to the irq directly) because on some platforms several GPIO 924 * to the irq directly) because on some platforms several GPIO
920 * controllers share the same interrupt line. 925 * controllers share the same interrupt line.
921 */ 926 */
922 ret = devm_request_irq(pctrl->dev, irq, intel_gpio_irq, IRQF_SHARED, 927 ret = devm_request_irq(pctrl->dev, irq, intel_gpio_irq,
928 IRQF_SHARED | IRQF_NO_THREAD,
923 dev_name(pctrl->dev), pctrl); 929 dev_name(pctrl->dev), pctrl);
924 if (ret) { 930 if (ret) {
925 dev_err(pctrl->dev, "failed to request interrupt\n"); 931 dev_err(pctrl->dev, "failed to request interrupt\n");
@@ -995,7 +1001,7 @@ int intel_pinctrl_probe(struct platform_device *pdev,
995 1001
996 pctrl->dev = &pdev->dev; 1002 pctrl->dev = &pdev->dev;
997 pctrl->soc = soc_data; 1003 pctrl->soc = soc_data;
998 spin_lock_init(&pctrl->lock); 1004 raw_spin_lock_init(&pctrl->lock);
999 1005
1000 /* 1006 /*
1001 * Make a copy of the communities which we can use to hold pointers 1007 * Make a copy of the communities which we can use to hold pointers
diff --git a/drivers/pinctrl/intel/pinctrl-merrifield.c b/drivers/pinctrl/intel/pinctrl-merrifield.c
new file mode 100644
index 000000000000..eb4990ff26ca
--- /dev/null
+++ b/drivers/pinctrl/intel/pinctrl-merrifield.c
@@ -0,0 +1,911 @@
1/*
2 * Intel Merrifield SoC pinctrl driver
3 *
4 * Copyright (C) 2016, Intel Corporation
5 * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#include <linux/bitops.h>
13#include <linux/err.h>
14#include <linux/module.h>
15#include <linux/platform_device.h>
16#include <linux/pinctrl/pinconf.h>
17#include <linux/pinctrl/pinconf-generic.h>
18#include <linux/pinctrl/pinctrl.h>
19#include <linux/pinctrl/pinmux.h>
20
21#include "pinctrl-intel.h"
22
23#define MRFLD_FAMILY_NR 64
24#define MRFLD_FAMILY_LEN 0x400
25
26#define SLEW_OFFSET 0x000
27#define BUFCFG_OFFSET 0x100
28#define MISC_OFFSET 0x300
29
30#define BUFCFG_PINMODE_SHIFT 0
31#define BUFCFG_PINMODE_MASK GENMASK(2, 0)
32#define BUFCFG_PINMODE_GPIO 0
33#define BUFCFG_PUPD_VAL_SHIFT 4
34#define BUFCFG_PUPD_VAL_MASK GENMASK(5, 4)
35#define BUFCFG_PUPD_VAL_2K 0
36#define BUFCFG_PUPD_VAL_20K 1
37#define BUFCFG_PUPD_VAL_50K 2
38#define BUFCFG_PUPD_VAL_910 3
39#define BUFCFG_PU_EN BIT(8)
40#define BUFCFG_PD_EN BIT(9)
41#define BUFCFG_Px_EN_MASK GENMASK(9, 8)
42#define BUFCFG_SLEWSEL BIT(10)
43#define BUFCFG_OVINEN BIT(12)
44#define BUFCFG_OVINEN_EN BIT(13)
45#define BUFCFG_OVINEN_MASK GENMASK(13, 12)
46#define BUFCFG_OVOUTEN BIT(14)
47#define BUFCFG_OVOUTEN_EN BIT(15)
48#define BUFCFG_OVOUTEN_MASK GENMASK(15, 14)
49#define BUFCFG_INDATAOV_VAL BIT(16)
50#define BUFCFG_INDATAOV_EN BIT(17)
51#define BUFCFG_INDATAOV_MASK GENMASK(17, 16)
52#define BUFCFG_OUTDATAOV_VAL BIT(18)
53#define BUFCFG_OUTDATAOV_EN BIT(19)
54#define BUFCFG_OUTDATAOV_MASK GENMASK(19, 18)
55#define BUFCFG_OD_EN BIT(21)
56
57/**
58 * struct mrfld_family - Intel pin family description
59 * @barno: MMIO BAR number where registers for this family reside
60 * @pin_base: Starting pin of pins in this family
61 * @npins: Number of pins in this family
62 * @protected: True if family is protected by access
63 * @regs: family specific common registers
64 */
65struct mrfld_family {
66 unsigned int barno;
67 unsigned int pin_base;
68 size_t npins;
69 bool protected;
70 void __iomem *regs;
71};
72
73#define MRFLD_FAMILY(b, s, e) \
74 { \
75 .barno = (b), \
76 .pin_base = (s), \
77 .npins = (e) - (s) + 1, \
78 }
79
80#define MRFLD_FAMILY_PROTECTED(b, s, e) \
81 { \
82 .barno = (b), \
83 .pin_base = (s), \
84 .npins = (e) - (s) + 1, \
85 .protected = true, \
86 }
87
88static const struct pinctrl_pin_desc mrfld_pins[] = {
89 /* Family 0: OCP2SSC (0 pins) */
90 /* Family 1: ULPI (13 pins) */
91 PINCTRL_PIN(0, "ULPI_CLK"),
92 PINCTRL_PIN(1, "ULPI_D0"),
93 PINCTRL_PIN(2, "ULPI_D1"),
94 PINCTRL_PIN(3, "ULPI_D2"),
95 PINCTRL_PIN(4, "ULPI_D3"),
96 PINCTRL_PIN(5, "ULPI_D4"),
97 PINCTRL_PIN(6, "ULPI_D5"),
98 PINCTRL_PIN(7, "ULPI_D6"),
99 PINCTRL_PIN(8, "ULPI_D7"),
100 PINCTRL_PIN(9, "ULPI_DIR"),
101 PINCTRL_PIN(10, "ULPI_NXT"),
102 PINCTRL_PIN(11, "ULPI_REFCLK"),
103 PINCTRL_PIN(12, "ULPI_STP"),
104 /* Family 2: eMMC (24 pins) */
105 PINCTRL_PIN(13, "EMMC_CLK"),
106 PINCTRL_PIN(14, "EMMC_CMD"),
107 PINCTRL_PIN(15, "EMMC_D0"),
108 PINCTRL_PIN(16, "EMMC_D1"),
109 PINCTRL_PIN(17, "EMMC_D2"),
110 PINCTRL_PIN(18, "EMMC_D3"),
111 PINCTRL_PIN(19, "EMMC_D4"),
112 PINCTRL_PIN(20, "EMMC_D5"),
113 PINCTRL_PIN(21, "EMMC_D6"),
114 PINCTRL_PIN(22, "EMMC_D7"),
115 PINCTRL_PIN(23, "EMMC_RST_N"),
116 PINCTRL_PIN(24, "GP154"),
117 PINCTRL_PIN(25, "GP155"),
118 PINCTRL_PIN(26, "GP156"),
119 PINCTRL_PIN(27, "GP157"),
120 PINCTRL_PIN(28, "GP158"),
121 PINCTRL_PIN(29, "GP159"),
122 PINCTRL_PIN(30, "GP160"),
123 PINCTRL_PIN(31, "GP161"),
124 PINCTRL_PIN(32, "GP162"),
125 PINCTRL_PIN(33, "GP163"),
126 PINCTRL_PIN(34, "GP97"),
127 PINCTRL_PIN(35, "GP14"),
128 PINCTRL_PIN(36, "GP15"),
129 /* Family 3: SDIO (20 pins) */
130 PINCTRL_PIN(37, "GP77_SD_CD"),
131 PINCTRL_PIN(38, "GP78_SD_CLK"),
132 PINCTRL_PIN(39, "GP79_SD_CMD"),
133 PINCTRL_PIN(40, "GP80_SD_D0"),
134 PINCTRL_PIN(41, "GP81_SD_D1"),
135 PINCTRL_PIN(42, "GP82_SD_D2"),
136 PINCTRL_PIN(43, "GP83_SD_D3"),
137 PINCTRL_PIN(44, "GP84_SD_LS_CLK_FB"),
138 PINCTRL_PIN(45, "GP85_SD_LS_CMD_DIR"),
139 PINCTRL_PIN(46, "GP86_SD_LVL_D_DIR"),
140 PINCTRL_PIN(47, "GP88_SD_LS_SEL"),
141 PINCTRL_PIN(48, "GP87_SD_PD"),
142 PINCTRL_PIN(49, "GP89_SD_WP"),
143 PINCTRL_PIN(50, "GP90_SDIO_CLK"),
144 PINCTRL_PIN(51, "GP91_SDIO_CMD"),
145 PINCTRL_PIN(52, "GP92_SDIO_D0"),
146 PINCTRL_PIN(53, "GP93_SDIO_D1"),
147 PINCTRL_PIN(54, "GP94_SDIO_D2"),
148 PINCTRL_PIN(55, "GP95_SDIO_D3"),
149 PINCTRL_PIN(56, "GP96_SDIO_PD"),
150 /* Family 4: HSI (8 pins) */
151 PINCTRL_PIN(57, "HSI_ACDATA"),
152 PINCTRL_PIN(58, "HSI_ACFLAG"),
153 PINCTRL_PIN(59, "HSI_ACREADY"),
154 PINCTRL_PIN(60, "HSI_ACWAKE"),
155 PINCTRL_PIN(61, "HSI_CADATA"),
156 PINCTRL_PIN(62, "HSI_CAFLAG"),
157 PINCTRL_PIN(63, "HSI_CAREADY"),
158 PINCTRL_PIN(64, "HSI_CAWAKE"),
159 /* Family 5: SSP Audio (14 pins) */
160 PINCTRL_PIN(65, "GP70"),
161 PINCTRL_PIN(66, "GP71"),
162 PINCTRL_PIN(67, "GP32_I2S_0_CLK"),
163 PINCTRL_PIN(68, "GP33_I2S_0_FS"),
164 PINCTRL_PIN(69, "GP34_I2S_0_RXD"),
165 PINCTRL_PIN(70, "GP35_I2S_0_TXD"),
166 PINCTRL_PIN(71, "GP36_I2S_1_CLK"),
167 PINCTRL_PIN(72, "GP37_I2S_1_FS"),
168 PINCTRL_PIN(73, "GP38_I2S_1_RXD"),
169 PINCTRL_PIN(74, "GP39_I2S_1_TXD"),
170 PINCTRL_PIN(75, "GP40_I2S_2_CLK"),
171 PINCTRL_PIN(76, "GP41_I2S_2_FS"),
172 PINCTRL_PIN(77, "GP42_I2S_2_RXD"),
173 PINCTRL_PIN(78, "GP43_I2S_2_TXD"),
174 /* Family 6: GP SSP (22 pins) */
175 PINCTRL_PIN(79, "GP120_SPI_3_CLK"),
176 PINCTRL_PIN(80, "GP121_SPI_3_SS"),
177 PINCTRL_PIN(81, "GP122_SPI_3_RXD"),
178 PINCTRL_PIN(82, "GP123_SPI_3_TXD"),
179 PINCTRL_PIN(83, "GP102_SPI_4_CLK"),
180 PINCTRL_PIN(84, "GP103_SPI_4_SS_0"),
181 PINCTRL_PIN(85, "GP104_SPI_4_SS_1"),
182 PINCTRL_PIN(86, "GP105_SPI_4_SS_2"),
183 PINCTRL_PIN(87, "GP106_SPI_4_SS_3"),
184 PINCTRL_PIN(88, "GP107_SPI_4_RXD"),
185 PINCTRL_PIN(89, "GP108_SPI_4_TXD"),
186 PINCTRL_PIN(90, "GP109_SPI_5_CLK"),
187 PINCTRL_PIN(91, "GP110_SPI_5_SS_0"),
188 PINCTRL_PIN(92, "GP111_SPI_5_SS_1"),
189 PINCTRL_PIN(93, "GP112_SPI_5_SS_2"),
190 PINCTRL_PIN(94, "GP113_SPI_5_SS_3"),
191 PINCTRL_PIN(95, "GP114_SPI_5_RXD"),
192 PINCTRL_PIN(96, "GP115_SPI_5_TXD"),
193 PINCTRL_PIN(97, "GP116_SPI_6_CLK"),
194 PINCTRL_PIN(98, "GP117_SPI_6_SS"),
195 PINCTRL_PIN(99, "GP118_SPI_6_RXD"),
196 PINCTRL_PIN(100, "GP119_SPI_6_TXD"),
197 /* Family 7: I2C (14 pins) */
198 PINCTRL_PIN(101, "GP19_I2C_1_SCL"),
199 PINCTRL_PIN(102, "GP20_I2C_1_SDA"),
200 PINCTRL_PIN(103, "GP21_I2C_2_SCL"),
201 PINCTRL_PIN(104, "GP22_I2C_2_SDA"),
202 PINCTRL_PIN(105, "GP17_I2C_3_SCL_HDMI"),
203 PINCTRL_PIN(106, "GP18_I2C_3_SDA_HDMI"),
204 PINCTRL_PIN(107, "GP23_I2C_4_SCL"),
205 PINCTRL_PIN(108, "GP24_I2C_4_SDA"),
206 PINCTRL_PIN(109, "GP25_I2C_5_SCL"),
207 PINCTRL_PIN(110, "GP26_I2C_5_SDA"),
208 PINCTRL_PIN(111, "GP27_I2C_6_SCL"),
209 PINCTRL_PIN(112, "GP28_I2C_6_SDA"),
210 PINCTRL_PIN(113, "GP29_I2C_7_SCL"),
211 PINCTRL_PIN(114, "GP30_I2C_7_SDA"),
212 /* Family 8: UART (12 pins) */
213 PINCTRL_PIN(115, "GP124_UART_0_CTS"),
214 PINCTRL_PIN(116, "GP125_UART_0_RTS"),
215 PINCTRL_PIN(117, "GP126_UART_0_RX"),
216 PINCTRL_PIN(118, "GP127_UART_0_TX"),
217 PINCTRL_PIN(119, "GP128_UART_1_CTS"),
218 PINCTRL_PIN(120, "GP129_UART_1_RTS"),
219 PINCTRL_PIN(121, "GP130_UART_1_RX"),
220 PINCTRL_PIN(122, "GP131_UART_1_TX"),
221 PINCTRL_PIN(123, "GP132_UART_2_CTS"),
222 PINCTRL_PIN(124, "GP133_UART_2_RTS"),
223 PINCTRL_PIN(125, "GP134_UART_2_RX"),
224 PINCTRL_PIN(126, "GP135_UART_2_TX"),
225 /* Family 9: GPIO South (19 pins) */
226 PINCTRL_PIN(127, "GP177"),
227 PINCTRL_PIN(128, "GP178"),
228 PINCTRL_PIN(129, "GP179"),
229 PINCTRL_PIN(130, "GP180"),
230 PINCTRL_PIN(131, "GP181"),
231 PINCTRL_PIN(132, "GP182_PWM2"),
232 PINCTRL_PIN(133, "GP183_PWM3"),
233 PINCTRL_PIN(134, "GP184"),
234 PINCTRL_PIN(135, "GP185"),
235 PINCTRL_PIN(136, "GP186"),
236 PINCTRL_PIN(137, "GP187"),
237 PINCTRL_PIN(138, "GP188"),
238 PINCTRL_PIN(139, "GP189"),
239 PINCTRL_PIN(140, "GP64_FAST_INT0"),
240 PINCTRL_PIN(141, "GP65_FAST_INT1"),
241 PINCTRL_PIN(142, "GP66_FAST_INT2"),
242 PINCTRL_PIN(143, "GP67_FAST_INT3"),
243 PINCTRL_PIN(144, "GP12_PWM0"),
244 PINCTRL_PIN(145, "GP13_PWM1"),
245 /* Family 10: Camera Sideband (12 pins) */
246 PINCTRL_PIN(146, "GP0"),
247 PINCTRL_PIN(147, "GP1"),
248 PINCTRL_PIN(148, "GP2"),
249 PINCTRL_PIN(149, "GP3"),
250 PINCTRL_PIN(150, "GP4"),
251 PINCTRL_PIN(151, "GP5"),
252 PINCTRL_PIN(152, "GP6"),
253 PINCTRL_PIN(153, "GP7"),
254 PINCTRL_PIN(154, "GP8"),
255 PINCTRL_PIN(155, "GP9"),
256 PINCTRL_PIN(156, "GP10"),
257 PINCTRL_PIN(157, "GP11"),
258 /* Family 11: Clock (22 pins) */
259 PINCTRL_PIN(158, "GP137"),
260 PINCTRL_PIN(159, "GP138"),
261 PINCTRL_PIN(160, "GP139"),
262 PINCTRL_PIN(161, "GP140"),
263 PINCTRL_PIN(162, "GP141"),
264 PINCTRL_PIN(163, "GP142"),
265 PINCTRL_PIN(164, "GP16_HDMI_HPD"),
266 PINCTRL_PIN(165, "GP68_DSI_A_TE"),
267 PINCTRL_PIN(166, "GP69_DSI_C_TE"),
268 PINCTRL_PIN(167, "OSC_CLK_CTRL0"),
269 PINCTRL_PIN(168, "OSC_CLK_CTRL1"),
270 PINCTRL_PIN(169, "OSC_CLK0"),
271 PINCTRL_PIN(170, "OSC_CLK1"),
272 PINCTRL_PIN(171, "OSC_CLK2"),
273 PINCTRL_PIN(172, "OSC_CLK3"),
274 PINCTRL_PIN(173, "OSC_CLK4"),
275 PINCTRL_PIN(174, "RESETOUT"),
276 PINCTRL_PIN(175, "PMODE"),
277 PINCTRL_PIN(176, "PRDY"),
278 PINCTRL_PIN(177, "PREQ"),
279 PINCTRL_PIN(178, "GP190"),
280 PINCTRL_PIN(179, "GP191"),
281 /* Family 12: MSIC (15 pins) */
282 PINCTRL_PIN(180, "I2C_0_SCL"),
283 PINCTRL_PIN(181, "I2C_0_SDA"),
284 PINCTRL_PIN(182, "IERR"),
285 PINCTRL_PIN(183, "JTAG_TCK"),
286 PINCTRL_PIN(184, "JTAG_TDI"),
287 PINCTRL_PIN(185, "JTAG_TDO"),
288 PINCTRL_PIN(186, "JTAG_TMS"),
289 PINCTRL_PIN(187, "JTAG_TRST"),
290 PINCTRL_PIN(188, "PROCHOT"),
291 PINCTRL_PIN(189, "RTC_CLK"),
292 PINCTRL_PIN(190, "SVID_ALERT"),
293 PINCTRL_PIN(191, "SVID_CLK"),
294 PINCTRL_PIN(192, "SVID_D"),
295 PINCTRL_PIN(193, "THERMTRIP"),
296 PINCTRL_PIN(194, "STANDBY"),
297 /* Family 13: Keyboard (20 pins) */
298 PINCTRL_PIN(195, "GP44"),
299 PINCTRL_PIN(196, "GP45"),
300 PINCTRL_PIN(197, "GP46"),
301 PINCTRL_PIN(198, "GP47"),
302 PINCTRL_PIN(199, "GP48"),
303 PINCTRL_PIN(200, "GP49"),
304 PINCTRL_PIN(201, "GP50"),
305 PINCTRL_PIN(202, "GP51"),
306 PINCTRL_PIN(203, "GP52"),
307 PINCTRL_PIN(204, "GP53"),
308 PINCTRL_PIN(205, "GP54"),
309 PINCTRL_PIN(206, "GP55"),
310 PINCTRL_PIN(207, "GP56"),
311 PINCTRL_PIN(208, "GP57"),
312 PINCTRL_PIN(209, "GP58"),
313 PINCTRL_PIN(210, "GP59"),
314 PINCTRL_PIN(211, "GP60"),
315 PINCTRL_PIN(212, "GP61"),
316 PINCTRL_PIN(213, "GP62"),
317 PINCTRL_PIN(214, "GP63"),
318 /* Family 14: GPIO North (13 pins) */
319 PINCTRL_PIN(215, "GP164"),
320 PINCTRL_PIN(216, "GP165"),
321 PINCTRL_PIN(217, "GP166"),
322 PINCTRL_PIN(218, "GP167"),
323 PINCTRL_PIN(219, "GP168_MJTAG_TCK"),
324 PINCTRL_PIN(220, "GP169_MJTAG_TDI"),
325 PINCTRL_PIN(221, "GP170_MJTAG_TDO"),
326 PINCTRL_PIN(222, "GP171_MJTAG_TMS"),
327 PINCTRL_PIN(223, "GP172_MJTAG_TRST"),
328 PINCTRL_PIN(224, "GP173"),
329 PINCTRL_PIN(225, "GP174"),
330 PINCTRL_PIN(226, "GP175"),
331 PINCTRL_PIN(227, "GP176"),
332 /* Family 15: PTI (5 pins) */
333 PINCTRL_PIN(228, "GP72_PTI_CLK"),
334 PINCTRL_PIN(229, "GP73_PTI_D0"),
335 PINCTRL_PIN(230, "GP74_PTI_D1"),
336 PINCTRL_PIN(231, "GP75_PTI_D2"),
337 PINCTRL_PIN(232, "GP76_PTI_D3"),
338 /* Family 16: USB3 (0 pins) */
339 /* Family 17: HSIC (0 pins) */
340 /* Family 18: Broadcast (0 pins) */
341};
342
343static const unsigned int mrfld_sdio_pins[] = { 50, 51, 52, 53, 54, 55, 56 };
344static const unsigned int mrfld_spi5_pins[] = { 90, 91, 92, 93, 94, 95, 96 };
345static const unsigned int mrfld_uart0_pins[] = { 124, 125, 126, 127 };
346static const unsigned int mrfld_uart1_pins[] = { 128, 129, 130, 131 };
347static const unsigned int mrfld_uart2_pins[] = { 132, 133, 134, 135 };
348static const unsigned int mrfld_pwm0_pins[] = { 144 };
349static const unsigned int mrfld_pwm1_pins[] = { 145 };
350static const unsigned int mrfld_pwm2_pins[] = { 132 };
351static const unsigned int mrfld_pwm3_pins[] = { 133 };
352
353static const struct intel_pingroup mrfld_groups[] = {
354 PIN_GROUP("sdio_grp", mrfld_sdio_pins, 1),
355 PIN_GROUP("spi5_grp", mrfld_spi5_pins, 1),
356 PIN_GROUP("uart0_grp", mrfld_uart0_pins, 1),
357 PIN_GROUP("uart1_grp", mrfld_uart1_pins, 1),
358 PIN_GROUP("uart2_grp", mrfld_uart2_pins, 1),
359 PIN_GROUP("pwm0_grp", mrfld_pwm0_pins, 1),
360 PIN_GROUP("pwm1_grp", mrfld_pwm1_pins, 1),
361 PIN_GROUP("pwm2_grp", mrfld_pwm2_pins, 1),
362 PIN_GROUP("pwm3_grp", mrfld_pwm3_pins, 1),
363};
364
365static const char * const mrfld_sdio_groups[] = { "sdio_grp" };
366static const char * const mrfld_spi5_groups[] = { "spi5_grp" };
367static const char * const mrfld_uart0_groups[] = { "uart0_grp" };
368static const char * const mrfld_uart1_groups[] = { "uart1_grp" };
369static const char * const mrfld_uart2_groups[] = { "uart2_grp" };
370static const char * const mrfld_pwm0_groups[] = { "pwm0_grp" };
371static const char * const mrfld_pwm1_groups[] = { "pwm1_grp" };
372static const char * const mrfld_pwm2_groups[] = { "pwm2_grp" };
373static const char * const mrfld_pwm3_groups[] = { "pwm3_grp" };
374
375static const struct intel_function mrfld_functions[] = {
376 FUNCTION("sdio", mrfld_sdio_groups),
377 FUNCTION("spi5", mrfld_spi5_groups),
378 FUNCTION("uart0", mrfld_uart0_groups),
379 FUNCTION("uart1", mrfld_uart1_groups),
380 FUNCTION("uart2", mrfld_uart2_groups),
381 FUNCTION("pwm0", mrfld_pwm0_groups),
382 FUNCTION("pwm1", mrfld_pwm1_groups),
383 FUNCTION("pwm2", mrfld_pwm2_groups),
384 FUNCTION("pwm3", mrfld_pwm3_groups),
385};
386
387static const struct mrfld_family mrfld_families[] = {
388 MRFLD_FAMILY(1, 0, 12),
389 MRFLD_FAMILY(2, 13, 36),
390 MRFLD_FAMILY(3, 37, 56),
391 MRFLD_FAMILY(4, 57, 64),
392 MRFLD_FAMILY(5, 65, 78),
393 MRFLD_FAMILY(6, 79, 100),
394 MRFLD_FAMILY_PROTECTED(7, 101, 114),
395 MRFLD_FAMILY(8, 115, 126),
396 MRFLD_FAMILY(9, 127, 145),
397 MRFLD_FAMILY(10, 146, 157),
398 MRFLD_FAMILY(11, 158, 179),
399 MRFLD_FAMILY_PROTECTED(12, 180, 194),
400 MRFLD_FAMILY(13, 195, 214),
401 MRFLD_FAMILY(14, 215, 227),
402 MRFLD_FAMILY(15, 228, 232),
403};
404
405/**
406 * struct mrfld_pinctrl - Intel Merrifield pinctrl private structure
407 * @dev: Pointer to the device structure
408 * @lock: Lock to serialize register access
409 * @pctldesc: Pin controller description
410 * @pctldev: Pointer to the pin controller device
411 * @families: Array of families this pinctrl handles
412 * @nfamilies: Number of families in the array
413 * @functions: Array of functions
414 * @nfunctions: Number of functions in the array
415 * @groups: Array of pin groups
416 * @ngroups: Number of groups in the array
417 * @pins: Array of pins this pinctrl controls
418 * @npins: Number of pins in the array
419 */
420struct mrfld_pinctrl {
421 struct device *dev;
422 raw_spinlock_t lock;
423 struct pinctrl_desc pctldesc;
424 struct pinctrl_dev *pctldev;
425
426 /* Pin controller configuration */
427 const struct mrfld_family *families;
428 size_t nfamilies;
429 const struct intel_function *functions;
430 size_t nfunctions;
431 const struct intel_pingroup *groups;
432 size_t ngroups;
433 const struct pinctrl_pin_desc *pins;
434 size_t npins;
435};
436
437#define pin_to_bufno(f, p) ((p) - (f)->pin_base)
438
439static const struct mrfld_family *mrfld_get_family(struct mrfld_pinctrl *mp,
440 unsigned int pin)
441{
442 const struct mrfld_family *family;
443 unsigned int i;
444
445 for (i = 0; i < mp->nfamilies; i++) {
446 family = &mp->families[i];
447 if (pin >= family->pin_base &&
448 pin < family->pin_base + family->npins)
449 return family;
450 }
451
452 dev_warn(mp->dev, "failed to find family for pin %u\n", pin);
453 return NULL;
454}
455
456static bool mrfld_buf_available(struct mrfld_pinctrl *mp, unsigned int pin)
457{
458 const struct mrfld_family *family;
459
460 family = mrfld_get_family(mp, pin);
461 if (!family)
462 return false;
463
464 return !family->protected;
465}
466
467static void __iomem *mrfld_get_bufcfg(struct mrfld_pinctrl *mp, unsigned int pin)
468{
469 const struct mrfld_family *family;
470 unsigned int bufno;
471
472 family = mrfld_get_family(mp, pin);
473 if (!family)
474 return NULL;
475
476 bufno = pin_to_bufno(family, pin);
477 return family->regs + BUFCFG_OFFSET + bufno * 4;
478}
479
480static int mrfld_get_groups_count(struct pinctrl_dev *pctldev)
481{
482 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
483
484 return mp->ngroups;
485}
486
487static const char *mrfld_get_group_name(struct pinctrl_dev *pctldev,
488 unsigned int group)
489{
490 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
491
492 return mp->groups[group].name;
493}
494
495static int mrfld_get_group_pins(struct pinctrl_dev *pctldev, unsigned int group,
496 const unsigned int **pins, unsigned int *npins)
497{
498 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
499
500 *pins = mp->groups[group].pins;
501 *npins = mp->groups[group].npins;
502 return 0;
503}
504
505static void mrfld_pin_dbg_show(struct pinctrl_dev *pctldev, struct seq_file *s,
506 unsigned int pin)
507{
508 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
509 void __iomem *bufcfg;
510 u32 value, mode;
511
512 if (!mrfld_buf_available(mp, pin)) {
513 seq_puts(s, "not available");
514 return;
515 }
516
517 bufcfg = mrfld_get_bufcfg(mp, pin);
518 value = readl(bufcfg);
519
520 mode = (value & BUFCFG_PINMODE_MASK) >> BUFCFG_PINMODE_SHIFT;
521 if (!mode)
522 seq_puts(s, "GPIO ");
523 else
524 seq_printf(s, "mode %d ", mode);
525
526 seq_printf(s, "0x%08x", value);
527}
528
529static const struct pinctrl_ops mrfld_pinctrl_ops = {
530 .get_groups_count = mrfld_get_groups_count,
531 .get_group_name = mrfld_get_group_name,
532 .get_group_pins = mrfld_get_group_pins,
533 .pin_dbg_show = mrfld_pin_dbg_show,
534};
535
536static int mrfld_get_functions_count(struct pinctrl_dev *pctldev)
537{
538 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
539
540 return mp->nfunctions;
541}
542
543static const char *mrfld_get_function_name(struct pinctrl_dev *pctldev,
544 unsigned int function)
545{
546 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
547
548 return mp->functions[function].name;
549}
550
551static int mrfld_get_function_groups(struct pinctrl_dev *pctldev,
552 unsigned int function,
553 const char * const **groups,
554 unsigned int * const ngroups)
555{
556 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
557
558 *groups = mp->functions[function].groups;
559 *ngroups = mp->functions[function].ngroups;
560 return 0;
561}
562
563static void mrfld_update_bufcfg(struct mrfld_pinctrl *mp, unsigned int pin,
564 u32 bits, u32 mask)
565{
566 void __iomem *bufcfg;
567 u32 value;
568
569 bufcfg = mrfld_get_bufcfg(mp, pin);
570 value = readl(bufcfg);
571
572 value &= ~mask;
573 value |= bits & mask;
574
575 writel(value, bufcfg);
576}
577
578static int mrfld_pinmux_set_mux(struct pinctrl_dev *pctldev,
579 unsigned int function,
580 unsigned int group)
581{
582 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
583 const struct intel_pingroup *grp = &mp->groups[group];
584 u32 bits = grp->mode << BUFCFG_PINMODE_SHIFT;
585 u32 mask = BUFCFG_PINMODE_MASK;
586 unsigned long flags;
587 unsigned int i;
588
589 /*
590 * All pins in the groups needs to be accessible and writable
591 * before we can enable the mux for this group.
592 */
593 for (i = 0; i < grp->npins; i++) {
594 if (!mrfld_buf_available(mp, grp->pins[i]))
595 return -EBUSY;
596 }
597
598 /* Now enable the mux setting for each pin in the group */
599 raw_spin_lock_irqsave(&mp->lock, flags);
600 for (i = 0; i < grp->npins; i++)
601 mrfld_update_bufcfg(mp, grp->pins[i], bits, mask);
602 raw_spin_unlock_irqrestore(&mp->lock, flags);
603
604 return 0;
605}
606
607static int mrfld_gpio_request_enable(struct pinctrl_dev *pctldev,
608 struct pinctrl_gpio_range *range,
609 unsigned int pin)
610{
611 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
612 u32 bits = BUFCFG_PINMODE_GPIO << BUFCFG_PINMODE_SHIFT;
613 u32 mask = BUFCFG_PINMODE_MASK;
614 unsigned long flags;
615
616 if (!mrfld_buf_available(mp, pin))
617 return -EBUSY;
618
619 raw_spin_lock_irqsave(&mp->lock, flags);
620 mrfld_update_bufcfg(mp, pin, bits, mask);
621 raw_spin_unlock_irqrestore(&mp->lock, flags);
622
623 return 0;
624}
625
626static const struct pinmux_ops mrfld_pinmux_ops = {
627 .get_functions_count = mrfld_get_functions_count,
628 .get_function_name = mrfld_get_function_name,
629 .get_function_groups = mrfld_get_function_groups,
630 .set_mux = mrfld_pinmux_set_mux,
631 .gpio_request_enable = mrfld_gpio_request_enable,
632};
633
634static int mrfld_config_get(struct pinctrl_dev *pctldev, unsigned int pin,
635 unsigned long *config)
636{
637 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
638 enum pin_config_param param = pinconf_to_config_param(*config);
639 u32 value, term;
640 u16 arg = 0;
641
642 if (!mrfld_buf_available(mp, pin))
643 return -ENOTSUPP;
644
645 value = readl(mrfld_get_bufcfg(mp, pin));
646 term = (value & BUFCFG_PUPD_VAL_MASK) >> BUFCFG_PUPD_VAL_SHIFT;
647
648 switch (param) {
649 case PIN_CONFIG_BIAS_DISABLE:
650 if (value & BUFCFG_Px_EN_MASK)
651 return -EINVAL;
652 break;
653
654 case PIN_CONFIG_BIAS_PULL_UP:
655 if ((value & BUFCFG_Px_EN_MASK) != BUFCFG_PU_EN)
656 return -EINVAL;
657
658 switch (term) {
659 case BUFCFG_PUPD_VAL_910:
660 arg = 910;
661 break;
662 case BUFCFG_PUPD_VAL_2K:
663 arg = 2000;
664 break;
665 case BUFCFG_PUPD_VAL_20K:
666 arg = 20000;
667 break;
668 case BUFCFG_PUPD_VAL_50K:
669 arg = 50000;
670 break;
671 }
672
673 break;
674
675 case PIN_CONFIG_BIAS_PULL_DOWN:
676 if ((value & BUFCFG_Px_EN_MASK) != BUFCFG_PD_EN)
677 return -EINVAL;
678
679 switch (term) {
680 case BUFCFG_PUPD_VAL_910:
681 arg = 910;
682 break;
683 case BUFCFG_PUPD_VAL_2K:
684 arg = 2000;
685 break;
686 case BUFCFG_PUPD_VAL_20K:
687 arg = 20000;
688 break;
689 case BUFCFG_PUPD_VAL_50K:
690 arg = 50000;
691 break;
692 }
693
694 break;
695
696 case PIN_CONFIG_DRIVE_OPEN_DRAIN:
697 if (!(value & BUFCFG_OD_EN))
698 return -EINVAL;
699 break;
700
701 case PIN_CONFIG_SLEW_RATE:
702 if (!(value & BUFCFG_SLEWSEL))
703 arg = 0;
704 else
705 arg = 1;
706 break;
707
708 default:
709 return -ENOTSUPP;
710 }
711
712 *config = pinconf_to_config_packed(param, arg);
713 return 0;
714}
715
716static int mrfld_config_set_pin(struct mrfld_pinctrl *mp, unsigned int pin,
717 unsigned long config)
718{
719 unsigned int param = pinconf_to_config_param(config);
720 unsigned int arg = pinconf_to_config_argument(config);
721 u32 bits = 0, mask = 0;
722 unsigned long flags;
723
724 switch (param) {
725 case PIN_CONFIG_BIAS_DISABLE:
726 mask |= BUFCFG_Px_EN_MASK | BUFCFG_PUPD_VAL_MASK;
727 break;
728
729 case PIN_CONFIG_BIAS_PULL_UP:
730 mask |= BUFCFG_Px_EN_MASK | BUFCFG_PUPD_VAL_MASK;
731 bits |= BUFCFG_PU_EN;
732
733 switch (arg) {
734 case 50000:
735 bits |= BUFCFG_PUPD_VAL_50K << BUFCFG_PUPD_VAL_SHIFT;
736 break;
737 case 20000:
738 bits |= BUFCFG_PUPD_VAL_20K << BUFCFG_PUPD_VAL_SHIFT;
739 break;
740 case 2000:
741 bits |= BUFCFG_PUPD_VAL_2K << BUFCFG_PUPD_VAL_SHIFT;
742 break;
743 default:
744 return -EINVAL;
745 }
746
747 break;
748
749 case PIN_CONFIG_BIAS_PULL_DOWN:
750 mask |= BUFCFG_Px_EN_MASK | BUFCFG_PUPD_VAL_MASK;
751 bits |= BUFCFG_PD_EN;
752
753 switch (arg) {
754 case 50000:
755 bits |= BUFCFG_PUPD_VAL_50K << BUFCFG_PUPD_VAL_SHIFT;
756 break;
757 case 20000:
758 bits |= BUFCFG_PUPD_VAL_20K << BUFCFG_PUPD_VAL_SHIFT;
759 break;
760 case 2000:
761 bits |= BUFCFG_PUPD_VAL_2K << BUFCFG_PUPD_VAL_SHIFT;
762 break;
763 default:
764 return -EINVAL;
765 }
766
767 break;
768
769 case PIN_CONFIG_DRIVE_OPEN_DRAIN:
770 mask |= BUFCFG_OD_EN;
771 if (arg)
772 bits |= BUFCFG_OD_EN;
773 break;
774
775 case PIN_CONFIG_SLEW_RATE:
776 mask |= BUFCFG_SLEWSEL;
777 if (arg)
778 bits |= BUFCFG_SLEWSEL;
779 break;
780 }
781
782 raw_spin_lock_irqsave(&mp->lock, flags);
783 mrfld_update_bufcfg(mp, pin, bits, mask);
784 raw_spin_unlock_irqrestore(&mp->lock, flags);
785
786 return 0;
787}
788
789static int mrfld_config_set(struct pinctrl_dev *pctldev, unsigned int pin,
790 unsigned long *configs, unsigned int nconfigs)
791{
792 struct mrfld_pinctrl *mp = pinctrl_dev_get_drvdata(pctldev);
793 unsigned int i;
794 int ret;
795
796 for (i = 0; i < nconfigs; i++) {
797 switch (pinconf_to_config_param(configs[i])) {
798 case PIN_CONFIG_BIAS_DISABLE:
799 case PIN_CONFIG_BIAS_PULL_UP:
800 case PIN_CONFIG_BIAS_PULL_DOWN:
801 case PIN_CONFIG_DRIVE_OPEN_DRAIN:
802 case PIN_CONFIG_SLEW_RATE:
803 ret = mrfld_config_set_pin(mp, pin, configs[i]);
804 if (ret)
805 return ret;
806 break;
807
808 default:
809 return -ENOTSUPP;
810 }
811 }
812
813 return 0;
814}
815
816static const struct pinconf_ops mrfld_pinconf_ops = {
817 .is_generic = true,
818 .pin_config_get = mrfld_config_get,
819 .pin_config_set = mrfld_config_set,
820};
821
822static const struct pinctrl_desc mrfld_pinctrl_desc = {
823 .pctlops = &mrfld_pinctrl_ops,
824 .pmxops = &mrfld_pinmux_ops,
825 .confops = &mrfld_pinconf_ops,
826 .owner = THIS_MODULE,
827};
828
829static int mrfld_pinctrl_probe(struct platform_device *pdev)
830{
831 struct mrfld_family *families;
832 struct mrfld_pinctrl *mp;
833 struct resource *mem;
834 void __iomem *regs;
835 size_t nfamilies;
836 unsigned int i;
837
838 mp = devm_kzalloc(&pdev->dev, sizeof(*mp), GFP_KERNEL);
839 if (!mp)
840 return -ENOMEM;
841
842 mp->dev = &pdev->dev;
843 raw_spin_lock_init(&mp->lock);
844
845 mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
846 regs = devm_ioremap_resource(&pdev->dev, mem);
847 if (IS_ERR(regs))
848 return PTR_ERR(regs);
849
850 /*
851 * Make a copy of the families which we can use to hold pointers
852 * to the registers.
853 */
854 nfamilies = ARRAY_SIZE(mrfld_families),
855 families = devm_kmemdup(&pdev->dev, mrfld_families,
856 nfamilies * sizeof(mrfld_families),
857 GFP_KERNEL);
858 if (!families)
859 return -ENOMEM;
860
861 /* Splice memory resource by chunk per family */
862 for (i = 0; i < nfamilies; i++) {
863 struct mrfld_family *family = &families[i];
864
865 family->regs = regs + family->barno * MRFLD_FAMILY_LEN;
866 }
867
868 mp->families = families;
869 mp->nfamilies = nfamilies;
870 mp->functions = mrfld_functions;
871 mp->nfunctions = ARRAY_SIZE(mrfld_functions);
872 mp->groups = mrfld_groups;
873 mp->ngroups = ARRAY_SIZE(mrfld_groups);
874 mp->pctldesc = mrfld_pinctrl_desc;
875 mp->pctldesc.name = dev_name(&pdev->dev);
876 mp->pctldesc.pins = mrfld_pins;
877 mp->pctldesc.npins = ARRAY_SIZE(mrfld_pins);
878
879 mp->pctldev = devm_pinctrl_register(&pdev->dev, &mp->pctldesc, mp);
880 if (IS_ERR(mp->pctldev)) {
881 dev_err(&pdev->dev, "failed to register pinctrl driver\n");
882 return PTR_ERR(mp->pctldev);
883 }
884
885 platform_set_drvdata(pdev, mp);
886 return 0;
887}
888
889static struct platform_driver mrfld_pinctrl_driver = {
890 .probe = mrfld_pinctrl_probe,
891 .driver = {
892 .name = "pinctrl-merrifield",
893 },
894};
895
896static int __init mrfld_pinctrl_init(void)
897{
898 return platform_driver_register(&mrfld_pinctrl_driver);
899}
900subsys_initcall(mrfld_pinctrl_init);
901
902static void __exit mrfld_pinctrl_exit(void)
903{
904 platform_driver_unregister(&mrfld_pinctrl_driver);
905}
906module_exit(mrfld_pinctrl_exit);
907
908MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>");
909MODULE_DESCRIPTION("Intel Merrifield SoC pinctrl driver");
910MODULE_LICENSE("GPL v2");
911MODULE_ALIAS("platform:pinctrl-merrifield");
diff --git a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
index a607655d7830..ce554e0d6979 100644
--- a/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ b/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1183,8 +1183,8 @@ static int mtk_eint_resume(struct device *device)
1183} 1183}
1184 1184
1185const struct dev_pm_ops mtk_eint_pm_ops = { 1185const struct dev_pm_ops mtk_eint_pm_ops = {
1186 .suspend = mtk_eint_suspend, 1186 .suspend_noirq = mtk_eint_suspend,
1187 .resume = mtk_eint_resume, 1187 .resume_noirq = mtk_eint_resume,
1188}; 1188};
1189 1189
1190static void mtk_eint_ack(struct irq_data *d) 1190static void mtk_eint_ack(struct irq_data *d)
diff --git a/drivers/pinctrl/meson/pinctrl-meson-gxbb.c b/drivers/pinctrl/meson/pinctrl-meson-gxbb.c
index eeabafbbf598..cb4d6ad30530 100644
--- a/drivers/pinctrl/meson/pinctrl-meson-gxbb.c
+++ b/drivers/pinctrl/meson/pinctrl-meson-gxbb.c
@@ -147,6 +147,52 @@ static const struct pinctrl_pin_desc meson_gxbb_periphs_pins[] = {
147 MESON_PIN(GPIO_TEST_N, EE_OFF), 147 MESON_PIN(GPIO_TEST_N, EE_OFF),
148}; 148};
149 149
150static const unsigned int emmc_nand_d07_pins[] = {
151 PIN(BOOT_0, EE_OFF), PIN(BOOT_1, EE_OFF), PIN(BOOT_2, EE_OFF),
152 PIN(BOOT_3, EE_OFF), PIN(BOOT_4, EE_OFF), PIN(BOOT_5, EE_OFF),
153 PIN(BOOT_6, EE_OFF), PIN(BOOT_7, EE_OFF),
154};
155static const unsigned int emmc_clk_pins[] = { PIN(BOOT_8, EE_OFF) };
156static const unsigned int emmc_cmd_pins[] = { PIN(BOOT_10, EE_OFF) };
157static const unsigned int emmc_ds_pins[] = { PIN(BOOT_15, EE_OFF) };
158
159static const unsigned int sdcard_d0_pins[] = { PIN(CARD_1, EE_OFF) };
160static const unsigned int sdcard_d1_pins[] = { PIN(CARD_0, EE_OFF) };
161static const unsigned int sdcard_d2_pins[] = { PIN(CARD_5, EE_OFF) };
162static const unsigned int sdcard_d3_pins[] = { PIN(CARD_4, EE_OFF) };
163static const unsigned int sdcard_cmd_pins[] = { PIN(CARD_3, EE_OFF) };
164static const unsigned int sdcard_clk_pins[] = { PIN(CARD_2, EE_OFF) };
165
166static const unsigned int uart_tx_a_pins[] = { PIN(GPIOX_12, EE_OFF) };
167static const unsigned int uart_rx_a_pins[] = { PIN(GPIOX_13, EE_OFF) };
168static const unsigned int uart_cts_a_pins[] = { PIN(GPIOX_14, EE_OFF) };
169static const unsigned int uart_rts_a_pins[] = { PIN(GPIOX_15, EE_OFF) };
170
171static const unsigned int uart_tx_b_pins[] = { PIN(GPIODV_24, EE_OFF) };
172static const unsigned int uart_rx_b_pins[] = { PIN(GPIODV_25, EE_OFF) };
173static const unsigned int uart_cts_b_pins[] = { PIN(GPIODV_26, EE_OFF) };
174static const unsigned int uart_rts_b_pins[] = { PIN(GPIODV_27, EE_OFF) };
175
176static const unsigned int uart_tx_c_pins[] = { PIN(GPIOY_13, EE_OFF) };
177static const unsigned int uart_rx_c_pins[] = { PIN(GPIOY_14, EE_OFF) };
178static const unsigned int uart_cts_c_pins[] = { PIN(GPIOX_11, EE_OFF) };
179static const unsigned int uart_rts_c_pins[] = { PIN(GPIOX_12, EE_OFF) };
180
181static const unsigned int eth_mdio_pins[] = { PIN(GPIOZ_0, EE_OFF) };
182static const unsigned int eth_mdc_pins[] = { PIN(GPIOZ_1, EE_OFF) };
183static const unsigned int eth_clk_rx_clk_pins[] = { PIN(GPIOZ_2, EE_OFF) };
184static const unsigned int eth_rx_dv_pins[] = { PIN(GPIOZ_3, EE_OFF) };
185static const unsigned int eth_rxd0_pins[] = { PIN(GPIOZ_4, EE_OFF) };
186static const unsigned int eth_rxd1_pins[] = { PIN(GPIOZ_5, EE_OFF) };
187static const unsigned int eth_rxd2_pins[] = { PIN(GPIOZ_6, EE_OFF) };
188static const unsigned int eth_rxd3_pins[] = { PIN(GPIOZ_7, EE_OFF) };
189static const unsigned int eth_rgmii_tx_clk_pins[] = { PIN(GPIOZ_8, EE_OFF) };
190static const unsigned int eth_tx_en_pins[] = { PIN(GPIOZ_9, EE_OFF) };
191static const unsigned int eth_txd0_pins[] = { PIN(GPIOZ_10, EE_OFF) };
192static const unsigned int eth_txd1_pins[] = { PIN(GPIOZ_11, EE_OFF) };
193static const unsigned int eth_txd2_pins[] = { PIN(GPIOZ_12, EE_OFF) };
194static const unsigned int eth_txd3_pins[] = { PIN(GPIOZ_13, EE_OFF) };
195
150static const struct pinctrl_pin_desc meson_gxbb_aobus_pins[] = { 196static const struct pinctrl_pin_desc meson_gxbb_aobus_pins[] = {
151 MESON_PIN(GPIOAO_0, 0), 197 MESON_PIN(GPIOAO_0, 0),
152 MESON_PIN(GPIOAO_1, 0), 198 MESON_PIN(GPIOAO_1, 0),
@@ -168,6 +214,16 @@ static const unsigned int uart_tx_ao_a_pins[] = { PIN(GPIOAO_0, 0) };
168static const unsigned int uart_rx_ao_a_pins[] = { PIN(GPIOAO_1, 0) }; 214static const unsigned int uart_rx_ao_a_pins[] = { PIN(GPIOAO_1, 0) };
169static const unsigned int uart_cts_ao_a_pins[] = { PIN(GPIOAO_2, 0) }; 215static const unsigned int uart_cts_ao_a_pins[] = { PIN(GPIOAO_2, 0) };
170static const unsigned int uart_rts_ao_a_pins[] = { PIN(GPIOAO_3, 0) }; 216static const unsigned int uart_rts_ao_a_pins[] = { PIN(GPIOAO_3, 0) };
217static const unsigned int uart_tx_ao_b_pins[] = { PIN(GPIOAO_0, 0) };
218static const unsigned int uart_rx_ao_b_pins[] = { PIN(GPIOAO_1, 0),
219 PIN(GPIOAO_5, 0) };
220static const unsigned int uart_cts_ao_b_pins[] = { PIN(GPIOAO_2, 0) };
221static const unsigned int uart_rts_ao_b_pins[] = { PIN(GPIOAO_3, 0) };
222
223static const unsigned int i2c_sck_ao_pins[] = {PIN(GPIOAO_4, 0) };
224static const unsigned int i2c_sda_ao_pins[] = {PIN(GPIOAO_5, 0) };
225static const unsigned int i2c_slave_sck_ao_pins[] = {PIN(GPIOAO_4, 0) };
226static const unsigned int i2c_slave_sda_ao_pins[] = {PIN(GPIOAO_5, 0) };
171 227
172static struct meson_pmx_group meson_gxbb_periphs_groups[] = { 228static struct meson_pmx_group meson_gxbb_periphs_groups[] = {
173 GPIO_GROUP(GPIOZ_0, EE_OFF), 229 GPIO_GROUP(GPIOZ_0, EE_OFF),
@@ -297,6 +353,54 @@ static struct meson_pmx_group meson_gxbb_periphs_groups[] = {
297 GPIO_GROUP(GPIOCLK_3, EE_OFF), 353 GPIO_GROUP(GPIOCLK_3, EE_OFF),
298 354
299 GPIO_GROUP(GPIO_TEST_N, EE_OFF), 355 GPIO_GROUP(GPIO_TEST_N, EE_OFF),
356
357 /* Bank X */
358 GROUP(uart_tx_a, 4, 13),
359 GROUP(uart_rx_a, 4, 12),
360 GROUP(uart_cts_a, 4, 11),
361 GROUP(uart_rts_a, 4, 10),
362
363 /* Bank Y */
364 GROUP(uart_cts_c, 1, 19),
365 GROUP(uart_rts_c, 1, 18),
366 GROUP(uart_tx_c, 1, 17),
367 GROUP(uart_rx_c, 1, 16),
368
369 /* Bank Z */
370 GROUP(eth_mdio, 6, 1),
371 GROUP(eth_mdc, 6, 0),
372 GROUP(eth_clk_rx_clk, 6, 13),
373 GROUP(eth_rx_dv, 6, 12),
374 GROUP(eth_rxd0, 6, 11),
375 GROUP(eth_rxd1, 6, 10),
376 GROUP(eth_rxd2, 6, 9),
377 GROUP(eth_rxd3, 6, 8),
378 GROUP(eth_rgmii_tx_clk, 6, 7),
379 GROUP(eth_tx_en, 6, 6),
380 GROUP(eth_txd0, 6, 5),
381 GROUP(eth_txd1, 6, 4),
382 GROUP(eth_txd2, 6, 3),
383 GROUP(eth_txd3, 6, 2),
384
385 /* Bank DV */
386 GROUP(uart_tx_b, 2, 29),
387 GROUP(uart_rx_b, 2, 28),
388 GROUP(uart_cts_b, 2, 27),
389 GROUP(uart_rts_b, 2, 26),
390
391 /* Bank BOOT */
392 GROUP(emmc_nand_d07, 4, 30),
393 GROUP(emmc_clk, 4, 18),
394 GROUP(emmc_cmd, 4, 19),
395 GROUP(emmc_ds, 4, 31),
396
397 /* Bank CARD */
398 GROUP(sdcard_d1, 2, 14),
399 GROUP(sdcard_d0, 2, 15),
400 GROUP(sdcard_d3, 2, 12),
401 GROUP(sdcard_d2, 2, 13),
402 GROUP(sdcard_cmd, 2, 10),
403 GROUP(sdcard_clk, 2, 11),
300}; 404};
301 405
302static struct meson_pmx_group meson_gxbb_aobus_groups[] = { 406static struct meson_pmx_group meson_gxbb_aobus_groups[] = {
@@ -316,10 +420,18 @@ static struct meson_pmx_group meson_gxbb_aobus_groups[] = {
316 GPIO_GROUP(GPIOAO_13, 0), 420 GPIO_GROUP(GPIOAO_13, 0),
317 421
318 /* bank AO */ 422 /* bank AO */
423 GROUP(uart_tx_ao_b, 0, 26),
424 GROUP(uart_rx_ao_b, 0, 25),
319 GROUP(uart_tx_ao_a, 0, 12), 425 GROUP(uart_tx_ao_a, 0, 12),
320 GROUP(uart_rx_ao_a, 0, 11), 426 GROUP(uart_rx_ao_a, 0, 11),
321 GROUP(uart_cts_ao_a, 0, 10), 427 GROUP(uart_cts_ao_a, 0, 10),
322 GROUP(uart_rts_ao_a, 0, 9), 428 GROUP(uart_rts_ao_a, 0, 9),
429 GROUP(uart_cts_ao_b, 0, 8),
430 GROUP(uart_rts_ao_b, 0, 7),
431 GROUP(i2c_sck_ao, 0, 6),
432 GROUP(i2c_sda_ao, 0, 5),
433 GROUP(i2c_slave_sck_ao, 0, 2),
434 GROUP(i2c_slave_sda_ao, 0, 1),
323}; 435};
324 436
325static const char * const gpio_periphs_groups[] = { 437static const char * const gpio_periphs_groups[] = {
@@ -359,6 +471,34 @@ static const char * const gpio_periphs_groups[] = {
359 "GPIO_TEST_N", 471 "GPIO_TEST_N",
360}; 472};
361 473
474static const char * const emmc_groups[] = {
475 "emmc_nand_d07", "emmc_clk", "emmc_cmd", "emmc_ds",
476};
477
478static const char * const sdcard_groups[] = {
479 "sdcard_d0", "sdcard_d1", "sdcard_d2", "sdcard_d3",
480 "sdcard_cmd", "sdcard_clk",
481};
482
483static const char * const uart_a_groups[] = {
484 "uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a",
485};
486
487static const char * const uart_b_groups[] = {
488 "uart_tx_b", "uart_rx_b", "uart_cts_b", "uart_rts_b",
489};
490
491static const char * const uart_c_groups[] = {
492 "uart_tx_c", "uart_rx_c", "uart_cts_c", "uart_rts_c",
493};
494
495static const char * const eth_groups[] = {
496 "eth_mdio", "eth_mdc", "eth_clk_rx_clk", "eth_rx_dv",
497 "eth_rxd0", "eth_rxd1", "eth_rxd2", "eth_rxd3",
498 "eth_rgmii_tx_clk", "eth_tx_en",
499 "eth_txd0", "eth_txd1", "eth_txd2", "eth_txd3",
500};
501
362static const char * const gpio_aobus_groups[] = { 502static const char * const gpio_aobus_groups[] = {
363 "GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4", 503 "GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4",
364 "GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9", 504 "GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9",
@@ -366,16 +506,37 @@ static const char * const gpio_aobus_groups[] = {
366}; 506};
367 507
368static const char * const uart_ao_groups[] = { 508static const char * const uart_ao_groups[] = {
369 "uart_tx_ao_a", "uart_rx_ao_a", "uart_cts_ao_a", "uart_rts_ao_a" 509 "uart_tx_ao_a", "uart_rx_ao_a", "uart_cts_ao_a", "uart_rts_ao_a",
510};
511
512static const char * const uart_ao_b_groups[] = {
513 "uart_tx_ao_b", "uart_rx_ao_b", "uart_cts_ao_b", "uart_rts_ao_b",
514};
515
516static const char * const i2c_ao_groups[] = {
517 "i2c_sdk_ao", "i2c_sda_ao",
518};
519
520static const char * const i2c_slave_ao_groups[] = {
521 "i2c_slave_sdk_ao", "i2c_slave_sda_ao",
370}; 522};
371 523
372static struct meson_pmx_func meson_gxbb_periphs_functions[] = { 524static struct meson_pmx_func meson_gxbb_periphs_functions[] = {
373 FUNCTION(gpio_periphs), 525 FUNCTION(gpio_periphs),
526 FUNCTION(emmc),
527 FUNCTION(sdcard),
528 FUNCTION(uart_a),
529 FUNCTION(uart_b),
530 FUNCTION(uart_c),
531 FUNCTION(eth),
374}; 532};
375 533
376static struct meson_pmx_func meson_gxbb_aobus_functions[] = { 534static struct meson_pmx_func meson_gxbb_aobus_functions[] = {
377 FUNCTION(gpio_aobus), 535 FUNCTION(gpio_aobus),
378 FUNCTION(uart_ao), 536 FUNCTION(uart_ao),
537 FUNCTION(uart_ao_b),
538 FUNCTION(i2c_ao),
539 FUNCTION(i2c_slave_ao),
379}; 540};
380 541
381static struct meson_bank meson_gxbb_periphs_banks[] = { 542static struct meson_bank meson_gxbb_periphs_banks[] = {
diff --git a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c
index a78e9a4997ba..5f89c26f3292 100644
--- a/drivers/pinctrl/mvebu/pinctrl-kirkwood.c
+++ b/drivers/pinctrl/mvebu/pinctrl-kirkwood.c
@@ -168,87 +168,87 @@ static struct mvebu_mpp_mode mv88f6xxx_mpp_modes[] = {
168 MPP_VAR_FUNCTION(0x0, "gpo", NULL, V(1, 1, 1, 1, 1, 1)), 168 MPP_VAR_FUNCTION(0x0, "gpo", NULL, V(1, 1, 1, 1, 1, 1)),
169 MPP_VAR_FUNCTION(0x1, "nand", "io1", V(1, 1, 1, 1, 1, 1))), 169 MPP_VAR_FUNCTION(0x1, "nand", "io1", V(1, 1, 1, 1, 1, 1))),
170 MPP_MODE(20, 170 MPP_MODE(20,
171 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 171 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
172 MPP_VAR_FUNCTION(0x1, "ts", "mp0", V(0, 0, 1, 1, 1, 0)), 172 MPP_VAR_FUNCTION(0x1, "ts", "mp0", V(0, 0, 1, 1, 1, 0)),
173 MPP_VAR_FUNCTION(0x2, "tdm", "tx0ql", V(0, 0, 1, 1, 1, 0)), 173 MPP_VAR_FUNCTION(0x2, "tdm", "tx0ql", V(0, 0, 1, 1, 1, 0)),
174 MPP_VAR_FUNCTION(0x3, "ge1", "txd0", V(0, 1, 1, 1, 1, 0)), 174 MPP_VAR_FUNCTION(0x3, "ge1", "txd0", V(0, 1, 1, 1, 1, 0)),
175 MPP_VAR_FUNCTION(0x4, "audio", "spdifi", V(0, 0, 1, 1, 1, 0)), 175 MPP_VAR_FUNCTION(0x4, "audio", "spdifi", V(0, 0, 1, 1, 1, 0)),
176 MPP_VAR_FUNCTION(0x5, "sata1", "act", V(0, 0, 1, 1, 1, 0)), 176 MPP_VAR_FUNCTION(0x5, "sata1", "act", V(0, 0, 1, 1, 1, 0)),
177 MPP_VAR_FUNCTION(0xb, "lcd", "d0", V(0, 0, 0, 0, 1, 0)), 177 MPP_VAR_FUNCTION(0xb, "lcd", "d0", V(0, 0, 0, 0, 1, 0)),
178 MPP_VAR_FUNCTION(0xc, "mii", "rxerr", V(1, 0, 0, 0, 0, 0))), 178 MPP_VAR_FUNCTION(0xc, "mii", "rxerr", V(0, 0, 0, 0, 0, 0))),
179 MPP_MODE(21, 179 MPP_MODE(21,
180 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 180 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
181 MPP_VAR_FUNCTION(0x1, "ts", "mp1", V(0, 0, 1, 1, 1, 0)), 181 MPP_VAR_FUNCTION(0x1, "ts", "mp1", V(0, 0, 1, 1, 1, 0)),
182 MPP_VAR_FUNCTION(0x2, "tdm", "rx0ql", V(0, 0, 1, 1, 1, 0)), 182 MPP_VAR_FUNCTION(0x2, "tdm", "rx0ql", V(0, 0, 1, 1, 1, 0)),
183 MPP_VAR_FUNCTION(0x3, "ge1", "txd1", V(0, 1, 1, 1, 1, 0)), 183 MPP_VAR_FUNCTION(0x3, "ge1", "txd1", V(0, 1, 1, 1, 1, 0)),
184 MPP_VAR_FUNCTION(0x4, "audio", "spdifi", V(1, 0, 0, 0, 0, 0)), 184 MPP_VAR_FUNCTION(0x4, "audio", "spdifi", V(0, 0, 0, 0, 0, 0)),
185 MPP_VAR_FUNCTION(0x4, "audio", "spdifo", V(0, 0, 1, 1, 1, 0)), 185 MPP_VAR_FUNCTION(0x4, "audio", "spdifo", V(0, 0, 1, 1, 1, 0)),
186 MPP_VAR_FUNCTION(0x5, "sata0", "act", V(0, 1, 1, 1, 1, 0)), 186 MPP_VAR_FUNCTION(0x5, "sata0", "act", V(0, 1, 1, 1, 1, 0)),
187 MPP_VAR_FUNCTION(0xb, "lcd", "d1", V(0, 0, 0, 0, 1, 0))), 187 MPP_VAR_FUNCTION(0xb, "lcd", "d1", V(0, 0, 0, 0, 1, 0))),
188 MPP_MODE(22, 188 MPP_MODE(22,
189 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 189 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
190 MPP_VAR_FUNCTION(0x1, "ts", "mp2", V(0, 0, 1, 1, 1, 0)), 190 MPP_VAR_FUNCTION(0x1, "ts", "mp2", V(0, 0, 1, 1, 1, 0)),
191 MPP_VAR_FUNCTION(0x2, "tdm", "tx2ql", V(0, 0, 1, 1, 1, 0)), 191 MPP_VAR_FUNCTION(0x2, "tdm", "tx2ql", V(0, 0, 1, 1, 1, 0)),
192 MPP_VAR_FUNCTION(0x3, "ge1", "txd2", V(0, 1, 1, 1, 1, 0)), 192 MPP_VAR_FUNCTION(0x3, "ge1", "txd2", V(0, 1, 1, 1, 1, 0)),
193 MPP_VAR_FUNCTION(0x4, "audio", "spdifo", V(1, 0, 0, 0, 0, 0)), 193 MPP_VAR_FUNCTION(0x4, "audio", "spdifo", V(0, 0, 0, 0, 0, 0)),
194 MPP_VAR_FUNCTION(0x4, "audio", "rmclk", V(0, 0, 1, 1, 1, 0)), 194 MPP_VAR_FUNCTION(0x4, "audio", "rmclk", V(0, 0, 1, 1, 1, 0)),
195 MPP_VAR_FUNCTION(0x5, "sata1", "prsnt", V(0, 0, 1, 1, 1, 0)), 195 MPP_VAR_FUNCTION(0x5, "sata1", "prsnt", V(0, 0, 1, 1, 1, 0)),
196 MPP_VAR_FUNCTION(0xb, "lcd", "d2", V(0, 0, 0, 0, 1, 0))), 196 MPP_VAR_FUNCTION(0xb, "lcd", "d2", V(0, 0, 0, 0, 1, 0))),
197 MPP_MODE(23, 197 MPP_MODE(23,
198 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 198 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
199 MPP_VAR_FUNCTION(0x1, "ts", "mp3", V(0, 0, 1, 1, 1, 0)), 199 MPP_VAR_FUNCTION(0x1, "ts", "mp3", V(0, 0, 1, 1, 1, 0)),
200 MPP_VAR_FUNCTION(0x2, "tdm", "rx2ql", V(0, 0, 1, 1, 1, 0)), 200 MPP_VAR_FUNCTION(0x2, "tdm", "rx2ql", V(0, 0, 1, 1, 1, 0)),
201 MPP_VAR_FUNCTION(0x3, "ge1", "txd3", V(0, 1, 1, 1, 1, 0)), 201 MPP_VAR_FUNCTION(0x3, "ge1", "txd3", V(0, 1, 1, 1, 1, 0)),
202 MPP_VAR_FUNCTION(0x4, "audio", "rmclk", V(1, 0, 0, 0, 0, 0)), 202 MPP_VAR_FUNCTION(0x4, "audio", "rmclk", V(0, 0, 0, 0, 0, 0)),
203 MPP_VAR_FUNCTION(0x4, "audio", "bclk", V(0, 0, 1, 1, 1, 0)), 203 MPP_VAR_FUNCTION(0x4, "audio", "bclk", V(0, 0, 1, 1, 1, 0)),
204 MPP_VAR_FUNCTION(0x5, "sata0", "prsnt", V(0, 1, 1, 1, 1, 0)), 204 MPP_VAR_FUNCTION(0x5, "sata0", "prsnt", V(0, 1, 1, 1, 1, 0)),
205 MPP_VAR_FUNCTION(0xb, "lcd", "d3", V(0, 0, 0, 0, 1, 0))), 205 MPP_VAR_FUNCTION(0xb, "lcd", "d3", V(0, 0, 0, 0, 1, 0))),
206 MPP_MODE(24, 206 MPP_MODE(24,
207 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 207 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
208 MPP_VAR_FUNCTION(0x1, "ts", "mp4", V(0, 0, 1, 1, 1, 0)), 208 MPP_VAR_FUNCTION(0x1, "ts", "mp4", V(0, 0, 1, 1, 1, 0)),
209 MPP_VAR_FUNCTION(0x2, "tdm", "spi-cs0", V(0, 0, 1, 1, 1, 0)), 209 MPP_VAR_FUNCTION(0x2, "tdm", "spi-cs0", V(0, 0, 1, 1, 1, 0)),
210 MPP_VAR_FUNCTION(0x3, "ge1", "rxd0", V(0, 1, 1, 1, 1, 0)), 210 MPP_VAR_FUNCTION(0x3, "ge1", "rxd0", V(0, 1, 1, 1, 1, 0)),
211 MPP_VAR_FUNCTION(0x4, "audio", "bclk", V(1, 0, 0, 0, 0, 0)), 211 MPP_VAR_FUNCTION(0x4, "audio", "bclk", V(0, 0, 0, 0, 0, 0)),
212 MPP_VAR_FUNCTION(0x4, "audio", "sdo", V(0, 0, 1, 1, 1, 0)), 212 MPP_VAR_FUNCTION(0x4, "audio", "sdo", V(0, 0, 1, 1, 1, 0)),
213 MPP_VAR_FUNCTION(0xb, "lcd", "d4", V(0, 0, 0, 0, 1, 0))), 213 MPP_VAR_FUNCTION(0xb, "lcd", "d4", V(0, 0, 0, 0, 1, 0))),
214 MPP_MODE(25, 214 MPP_MODE(25,
215 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 215 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
216 MPP_VAR_FUNCTION(0x1, "ts", "mp5", V(0, 0, 1, 1, 1, 0)), 216 MPP_VAR_FUNCTION(0x1, "ts", "mp5", V(0, 0, 1, 1, 1, 0)),
217 MPP_VAR_FUNCTION(0x2, "tdm", "spi-sck", V(0, 0, 1, 1, 1, 0)), 217 MPP_VAR_FUNCTION(0x2, "tdm", "spi-sck", V(0, 0, 1, 1, 1, 0)),
218 MPP_VAR_FUNCTION(0x3, "ge1", "rxd1", V(0, 1, 1, 1, 1, 0)), 218 MPP_VAR_FUNCTION(0x3, "ge1", "rxd1", V(0, 1, 1, 1, 1, 0)),
219 MPP_VAR_FUNCTION(0x4, "audio", "sdo", V(1, 0, 0, 0, 0, 0)), 219 MPP_VAR_FUNCTION(0x4, "audio", "sdo", V(0, 0, 0, 0, 0, 0)),
220 MPP_VAR_FUNCTION(0x4, "audio", "lrclk", V(0, 0, 1, 1, 1, 0)), 220 MPP_VAR_FUNCTION(0x4, "audio", "lrclk", V(0, 0, 1, 1, 1, 0)),
221 MPP_VAR_FUNCTION(0xb, "lcd", "d5", V(0, 0, 0, 0, 1, 0))), 221 MPP_VAR_FUNCTION(0xb, "lcd", "d5", V(0, 0, 0, 0, 1, 0))),
222 MPP_MODE(26, 222 MPP_MODE(26,
223 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 223 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
224 MPP_VAR_FUNCTION(0x1, "ts", "mp6", V(0, 0, 1, 1, 1, 0)), 224 MPP_VAR_FUNCTION(0x1, "ts", "mp6", V(0, 0, 1, 1, 1, 0)),
225 MPP_VAR_FUNCTION(0x2, "tdm", "spi-miso", V(0, 0, 1, 1, 1, 0)), 225 MPP_VAR_FUNCTION(0x2, "tdm", "spi-miso", V(0, 0, 1, 1, 1, 0)),
226 MPP_VAR_FUNCTION(0x3, "ge1", "rxd2", V(0, 1, 1, 1, 1, 0)), 226 MPP_VAR_FUNCTION(0x3, "ge1", "rxd2", V(0, 1, 1, 1, 1, 0)),
227 MPP_VAR_FUNCTION(0x4, "audio", "lrclk", V(1, 0, 0, 0, 0, 0)), 227 MPP_VAR_FUNCTION(0x4, "audio", "lrclk", V(0, 0, 0, 0, 0, 0)),
228 MPP_VAR_FUNCTION(0x4, "audio", "mclk", V(0, 0, 1, 1, 1, 0)), 228 MPP_VAR_FUNCTION(0x4, "audio", "mclk", V(0, 0, 1, 1, 1, 0)),
229 MPP_VAR_FUNCTION(0xb, "lcd", "d6", V(0, 0, 0, 0, 1, 0))), 229 MPP_VAR_FUNCTION(0xb, "lcd", "d6", V(0, 0, 0, 0, 1, 0))),
230 MPP_MODE(27, 230 MPP_MODE(27,
231 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 231 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
232 MPP_VAR_FUNCTION(0x1, "ts", "mp7", V(0, 0, 1, 1, 1, 0)), 232 MPP_VAR_FUNCTION(0x1, "ts", "mp7", V(0, 0, 1, 1, 1, 0)),
233 MPP_VAR_FUNCTION(0x2, "tdm", "spi-mosi", V(0, 0, 1, 1, 1, 0)), 233 MPP_VAR_FUNCTION(0x2, "tdm", "spi-mosi", V(0, 0, 1, 1, 1, 0)),
234 MPP_VAR_FUNCTION(0x3, "ge1", "rxd3", V(0, 1, 1, 1, 1, 0)), 234 MPP_VAR_FUNCTION(0x3, "ge1", "rxd3", V(0, 1, 1, 1, 1, 0)),
235 MPP_VAR_FUNCTION(0x4, "audio", "mclk", V(1, 0, 0, 0, 0, 0)), 235 MPP_VAR_FUNCTION(0x4, "audio", "mclk", V(0, 0, 0, 0, 0, 0)),
236 MPP_VAR_FUNCTION(0x4, "audio", "sdi", V(0, 0, 1, 1, 1, 0)), 236 MPP_VAR_FUNCTION(0x4, "audio", "sdi", V(0, 0, 1, 1, 1, 0)),
237 MPP_VAR_FUNCTION(0xb, "lcd", "d7", V(0, 0, 0, 0, 1, 0))), 237 MPP_VAR_FUNCTION(0xb, "lcd", "d7", V(0, 0, 0, 0, 1, 0))),
238 MPP_MODE(28, 238 MPP_MODE(28,
239 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 239 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
240 MPP_VAR_FUNCTION(0x1, "ts", "mp8", V(0, 0, 1, 1, 1, 0)), 240 MPP_VAR_FUNCTION(0x1, "ts", "mp8", V(0, 0, 1, 1, 1, 0)),
241 MPP_VAR_FUNCTION(0x2, "tdm", "int", V(0, 0, 1, 1, 1, 0)), 241 MPP_VAR_FUNCTION(0x2, "tdm", "int", V(0, 0, 1, 1, 1, 0)),
242 MPP_VAR_FUNCTION(0x3, "ge1", "col", V(0, 1, 1, 1, 1, 0)), 242 MPP_VAR_FUNCTION(0x3, "ge1", "col", V(0, 1, 1, 1, 1, 0)),
243 MPP_VAR_FUNCTION(0x4, "audio", "sdi", V(1, 0, 0, 0, 0, 0)), 243 MPP_VAR_FUNCTION(0x4, "audio", "sdi", V(0, 0, 0, 0, 0, 0)),
244 MPP_VAR_FUNCTION(0x4, "audio", "extclk", V(0, 0, 1, 1, 1, 0)), 244 MPP_VAR_FUNCTION(0x4, "audio", "extclk", V(0, 0, 1, 1, 1, 0)),
245 MPP_VAR_FUNCTION(0xb, "lcd", "d8", V(0, 0, 0, 0, 1, 0))), 245 MPP_VAR_FUNCTION(0xb, "lcd", "d8", V(0, 0, 0, 0, 1, 0))),
246 MPP_MODE(29, 246 MPP_MODE(29,
247 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 0)), 247 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
248 MPP_VAR_FUNCTION(0x1, "ts", "mp9", V(0, 0, 1, 1, 1, 0)), 248 MPP_VAR_FUNCTION(0x1, "ts", "mp9", V(0, 0, 1, 1, 1, 0)),
249 MPP_VAR_FUNCTION(0x2, "tdm", "rst", V(0, 0, 1, 1, 1, 0)), 249 MPP_VAR_FUNCTION(0x2, "tdm", "rst", V(0, 0, 1, 1, 1, 0)),
250 MPP_VAR_FUNCTION(0x3, "ge1", "txclk", V(0, 1, 1, 1, 1, 0)), 250 MPP_VAR_FUNCTION(0x3, "ge1", "txclk", V(0, 1, 1, 1, 1, 0)),
251 MPP_VAR_FUNCTION(0x4, "audio", "extclk", V(1, 0, 0, 0, 0, 0)), 251 MPP_VAR_FUNCTION(0x4, "audio", "extclk", V(0, 0, 0, 0, 0, 0)),
252 MPP_VAR_FUNCTION(0xb, "lcd", "d9", V(0, 0, 0, 0, 1, 0))), 252 MPP_VAR_FUNCTION(0xb, "lcd", "d9", V(0, 0, 0, 0, 1, 0))),
253 MPP_MODE(30, 253 MPP_MODE(30,
254 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)), 254 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)),
@@ -280,65 +280,65 @@ static struct mvebu_mpp_mode mv88f6xxx_mpp_modes[] = {
280 MPP_VAR_FUNCTION(0x5, "sata1", "act", V(0, 0, 0, 1, 1, 0)), 280 MPP_VAR_FUNCTION(0x5, "sata1", "act", V(0, 0, 0, 1, 1, 0)),
281 MPP_VAR_FUNCTION(0xb, "lcd", "d14", V(0, 0, 0, 0, 1, 0))), 281 MPP_VAR_FUNCTION(0xb, "lcd", "d14", V(0, 0, 0, 0, 1, 0))),
282 MPP_MODE(35, 282 MPP_MODE(35,
283 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 1)), 283 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 1, 1, 1, 1, 1)),
284 MPP_VAR_FUNCTION(0x2, "tdm", "tx0ql", V(0, 0, 1, 1, 1, 0)), 284 MPP_VAR_FUNCTION(0x2, "tdm", "tx0ql", V(0, 0, 1, 1, 1, 0)),
285 MPP_VAR_FUNCTION(0x3, "ge1", "rxerr", V(0, 1, 1, 1, 1, 0)), 285 MPP_VAR_FUNCTION(0x3, "ge1", "rxerr", V(0, 1, 1, 1, 1, 0)),
286 MPP_VAR_FUNCTION(0x5, "sata0", "act", V(0, 1, 1, 1, 1, 0)), 286 MPP_VAR_FUNCTION(0x5, "sata0", "act", V(0, 1, 1, 1, 1, 0)),
287 MPP_VAR_FUNCTION(0xb, "lcd", "d15", V(0, 0, 0, 0, 1, 0)), 287 MPP_VAR_FUNCTION(0xb, "lcd", "d15", V(0, 0, 0, 0, 1, 0)),
288 MPP_VAR_FUNCTION(0xc, "mii", "rxerr", V(0, 1, 1, 1, 1, 0))), 288 MPP_VAR_FUNCTION(0xc, "mii", "rxerr", V(1, 1, 1, 1, 1, 0))),
289 MPP_MODE(36, 289 MPP_MODE(36,
290 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 290 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
291 MPP_VAR_FUNCTION(0x1, "ts", "mp0", V(0, 0, 0, 1, 1, 0)), 291 MPP_VAR_FUNCTION(0x1, "ts", "mp0", V(0, 0, 0, 1, 1, 0)),
292 MPP_VAR_FUNCTION(0x2, "tdm", "spi-cs1", V(0, 0, 0, 1, 1, 0)), 292 MPP_VAR_FUNCTION(0x2, "tdm", "spi-cs1", V(0, 0, 0, 1, 1, 0)),
293 MPP_VAR_FUNCTION(0x4, "audio", "spdifi", V(0, 0, 0, 1, 1, 0)), 293 MPP_VAR_FUNCTION(0x4, "audio", "spdifi", V(1, 0, 0, 1, 1, 0)),
294 MPP_VAR_FUNCTION(0xb, "twsi1", "sda", V(0, 0, 0, 0, 1, 0))), 294 MPP_VAR_FUNCTION(0xb, "twsi1", "sda", V(0, 0, 0, 0, 1, 0))),
295 MPP_MODE(37, 295 MPP_MODE(37,
296 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 296 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
297 MPP_VAR_FUNCTION(0x1, "ts", "mp1", V(0, 0, 0, 1, 1, 0)), 297 MPP_VAR_FUNCTION(0x1, "ts", "mp1", V(0, 0, 0, 1, 1, 0)),
298 MPP_VAR_FUNCTION(0x2, "tdm", "tx2ql", V(0, 0, 0, 1, 1, 0)), 298 MPP_VAR_FUNCTION(0x2, "tdm", "tx2ql", V(0, 0, 0, 1, 1, 0)),
299 MPP_VAR_FUNCTION(0x4, "audio", "spdifo", V(0, 0, 0, 1, 1, 0)), 299 MPP_VAR_FUNCTION(0x4, "audio", "spdifo", V(1, 0, 0, 1, 1, 0)),
300 MPP_VAR_FUNCTION(0xb, "twsi1", "sck", V(0, 0, 0, 0, 1, 0))), 300 MPP_VAR_FUNCTION(0xb, "twsi1", "sck", V(0, 0, 0, 0, 1, 0))),
301 MPP_MODE(38, 301 MPP_MODE(38,
302 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 302 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
303 MPP_VAR_FUNCTION(0x1, "ts", "mp2", V(0, 0, 0, 1, 1, 0)), 303 MPP_VAR_FUNCTION(0x1, "ts", "mp2", V(0, 0, 0, 1, 1, 0)),
304 MPP_VAR_FUNCTION(0x2, "tdm", "rx2ql", V(0, 0, 0, 1, 1, 0)), 304 MPP_VAR_FUNCTION(0x2, "tdm", "rx2ql", V(0, 0, 0, 1, 1, 0)),
305 MPP_VAR_FUNCTION(0x4, "audio", "rmclk", V(0, 0, 0, 1, 1, 0)), 305 MPP_VAR_FUNCTION(0x4, "audio", "rmclk", V(1, 0, 0, 1, 1, 0)),
306 MPP_VAR_FUNCTION(0xb, "lcd", "d18", V(0, 0, 0, 0, 1, 0))), 306 MPP_VAR_FUNCTION(0xb, "lcd", "d18", V(0, 0, 0, 0, 1, 0))),
307 MPP_MODE(39, 307 MPP_MODE(39,
308 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 308 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
309 MPP_VAR_FUNCTION(0x1, "ts", "mp3", V(0, 0, 0, 1, 1, 0)), 309 MPP_VAR_FUNCTION(0x1, "ts", "mp3", V(0, 0, 0, 1, 1, 0)),
310 MPP_VAR_FUNCTION(0x2, "tdm", "spi-cs0", V(0, 0, 0, 1, 1, 0)), 310 MPP_VAR_FUNCTION(0x2, "tdm", "spi-cs0", V(0, 0, 0, 1, 1, 0)),
311 MPP_VAR_FUNCTION(0x4, "audio", "bclk", V(0, 0, 0, 1, 1, 0)), 311 MPP_VAR_FUNCTION(0x4, "audio", "bclk", V(1, 0, 0, 1, 1, 0)),
312 MPP_VAR_FUNCTION(0xb, "lcd", "d19", V(0, 0, 0, 0, 1, 0))), 312 MPP_VAR_FUNCTION(0xb, "lcd", "d19", V(0, 0, 0, 0, 1, 0))),
313 MPP_MODE(40, 313 MPP_MODE(40,
314 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 314 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
315 MPP_VAR_FUNCTION(0x1, "ts", "mp4", V(0, 0, 0, 1, 1, 0)), 315 MPP_VAR_FUNCTION(0x1, "ts", "mp4", V(0, 0, 0, 1, 1, 0)),
316 MPP_VAR_FUNCTION(0x2, "tdm", "spi-sck", V(0, 0, 0, 1, 1, 0)), 316 MPP_VAR_FUNCTION(0x2, "tdm", "spi-sck", V(0, 0, 0, 1, 1, 0)),
317 MPP_VAR_FUNCTION(0x4, "audio", "sdo", V(0, 0, 0, 1, 1, 0)), 317 MPP_VAR_FUNCTION(0x4, "audio", "sdo", V(1, 0, 0, 1, 1, 0)),
318 MPP_VAR_FUNCTION(0xb, "lcd", "d20", V(0, 0, 0, 0, 1, 0))), 318 MPP_VAR_FUNCTION(0xb, "lcd", "d20", V(0, 0, 0, 0, 1, 0))),
319 MPP_MODE(41, 319 MPP_MODE(41,
320 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 320 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
321 MPP_VAR_FUNCTION(0x1, "ts", "mp5", V(0, 0, 0, 1, 1, 0)), 321 MPP_VAR_FUNCTION(0x1, "ts", "mp5", V(0, 0, 0, 1, 1, 0)),
322 MPP_VAR_FUNCTION(0x2, "tdm", "spi-miso", V(0, 0, 0, 1, 1, 0)), 322 MPP_VAR_FUNCTION(0x2, "tdm", "spi-miso", V(0, 0, 0, 1, 1, 0)),
323 MPP_VAR_FUNCTION(0x4, "audio", "lrclk", V(0, 0, 0, 1, 1, 0)), 323 MPP_VAR_FUNCTION(0x4, "audio", "lrclk", V(1, 0, 0, 1, 1, 0)),
324 MPP_VAR_FUNCTION(0xb, "lcd", "d21", V(0, 0, 0, 0, 1, 0))), 324 MPP_VAR_FUNCTION(0xb, "lcd", "d21", V(0, 0, 0, 0, 1, 0))),
325 MPP_MODE(42, 325 MPP_MODE(42,
326 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 326 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
327 MPP_VAR_FUNCTION(0x1, "ts", "mp6", V(0, 0, 0, 1, 1, 0)), 327 MPP_VAR_FUNCTION(0x1, "ts", "mp6", V(0, 0, 0, 1, 1, 0)),
328 MPP_VAR_FUNCTION(0x2, "tdm", "spi-mosi", V(0, 0, 0, 1, 1, 0)), 328 MPP_VAR_FUNCTION(0x2, "tdm", "spi-mosi", V(0, 0, 0, 1, 1, 0)),
329 MPP_VAR_FUNCTION(0x4, "audio", "mclk", V(0, 0, 0, 1, 1, 0)), 329 MPP_VAR_FUNCTION(0x4, "audio", "mclk", V(1, 0, 0, 1, 1, 0)),
330 MPP_VAR_FUNCTION(0xb, "lcd", "d22", V(0, 0, 0, 0, 1, 0))), 330 MPP_VAR_FUNCTION(0xb, "lcd", "d22", V(0, 0, 0, 0, 1, 0))),
331 MPP_MODE(43, 331 MPP_MODE(43,
332 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 332 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
333 MPP_VAR_FUNCTION(0x1, "ts", "mp7", V(0, 0, 0, 1, 1, 0)), 333 MPP_VAR_FUNCTION(0x1, "ts", "mp7", V(0, 0, 0, 1, 1, 0)),
334 MPP_VAR_FUNCTION(0x2, "tdm", "int", V(0, 0, 0, 1, 1, 0)), 334 MPP_VAR_FUNCTION(0x2, "tdm", "int", V(0, 0, 0, 1, 1, 0)),
335 MPP_VAR_FUNCTION(0x4, "audio", "sdi", V(0, 0, 0, 1, 1, 0)), 335 MPP_VAR_FUNCTION(0x4, "audio", "sdi", V(1, 0, 0, 1, 1, 0)),
336 MPP_VAR_FUNCTION(0xb, "lcd", "d23", V(0, 0, 0, 0, 1, 0))), 336 MPP_VAR_FUNCTION(0xb, "lcd", "d23", V(0, 0, 0, 0, 1, 0))),
337 MPP_MODE(44, 337 MPP_MODE(44,
338 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 338 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(1, 0, 0, 1, 1, 1)),
339 MPP_VAR_FUNCTION(0x1, "ts", "mp8", V(0, 0, 0, 1, 1, 0)), 339 MPP_VAR_FUNCTION(0x1, "ts", "mp8", V(0, 0, 0, 1, 1, 0)),
340 MPP_VAR_FUNCTION(0x2, "tdm", "rst", V(0, 0, 0, 1, 1, 0)), 340 MPP_VAR_FUNCTION(0x2, "tdm", "rst", V(0, 0, 0, 1, 1, 0)),
341 MPP_VAR_FUNCTION(0x4, "audio", "extclk", V(0, 0, 0, 1, 1, 0)), 341 MPP_VAR_FUNCTION(0x4, "audio", "extclk", V(1, 0, 0, 1, 1, 0)),
342 MPP_VAR_FUNCTION(0xb, "lcd", "clk", V(0, 0, 0, 0, 1, 0))), 342 MPP_VAR_FUNCTION(0xb, "lcd", "clk", V(0, 0, 0, 0, 1, 0))),
343 MPP_MODE(45, 343 MPP_MODE(45,
344 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), 344 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)),
@@ -371,11 +371,12 @@ static struct mvebu_mpp_mode mv88f6xxx_mpp_modes[] = {
371}; 371};
372 372
373static struct mvebu_mpp_ctrl mv88f6180_mpp_controls[] = { 373static struct mvebu_mpp_ctrl mv88f6180_mpp_controls[] = {
374 MPP_FUNC_CTRL(0, 29, NULL, kirkwood_mpp_ctrl), 374 MPP_FUNC_CTRL(0, 44, NULL, kirkwood_mpp_ctrl),
375}; 375};
376 376
377static struct pinctrl_gpio_range mv88f6180_gpio_ranges[] = { 377static struct pinctrl_gpio_range mv88f6180_gpio_ranges[] = {
378 MPP_GPIO_RANGE(0, 0, 0, 30), 378 MPP_GPIO_RANGE(0, 0, 0, 20),
379 MPP_GPIO_RANGE(1, 35, 35, 10),
379}; 380};
380 381
381static struct mvebu_mpp_ctrl mv88f619x_mpp_controls[] = { 382static struct mvebu_mpp_ctrl mv88f619x_mpp_controls[] = {
diff --git a/drivers/pinctrl/nomadik/pinctrl-nomadik.c b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
index 38faceff2f08..35f62180db4e 100644
--- a/drivers/pinctrl/nomadik/pinctrl-nomadik.c
+++ b/drivers/pinctrl/nomadik/pinctrl-nomadik.c
@@ -1033,102 +1033,6 @@ static inline void nmk_gpio_dbg_show_one(struct seq_file *s,
1033#define nmk_gpio_dbg_show NULL 1033#define nmk_gpio_dbg_show NULL
1034#endif 1034#endif
1035 1035
1036void nmk_gpio_clocks_enable(void)
1037{
1038 int i;
1039
1040 for (i = 0; i < NUM_BANKS; i++) {
1041 struct nmk_gpio_chip *chip = nmk_gpio_chips[i];
1042
1043 if (!chip)
1044 continue;
1045
1046 clk_enable(chip->clk);
1047 }
1048}
1049
1050void nmk_gpio_clocks_disable(void)
1051{
1052 int i;
1053
1054 for (i = 0; i < NUM_BANKS; i++) {
1055 struct nmk_gpio_chip *chip = nmk_gpio_chips[i];
1056
1057 if (!chip)
1058 continue;
1059
1060 clk_disable(chip->clk);
1061 }
1062}
1063
1064/*
1065 * Called from the suspend/resume path to only keep the real wakeup interrupts
1066 * (those that have had set_irq_wake() called on them) as wakeup interrupts,
1067 * and not the rest of the interrupts which we needed to have as wakeups for
1068 * cpuidle.
1069 *
1070 * PM ops are not used since this needs to be done at the end, after all the
1071 * other drivers are done with their suspend callbacks.
1072 */
1073void nmk_gpio_wakeups_suspend(void)
1074{
1075 int i;
1076
1077 for (i = 0; i < NUM_BANKS; i++) {
1078 struct nmk_gpio_chip *chip = nmk_gpio_chips[i];
1079
1080 if (!chip)
1081 break;
1082
1083 clk_enable(chip->clk);
1084
1085 writel(chip->rwimsc & chip->real_wake,
1086 chip->addr + NMK_GPIO_RWIMSC);
1087 writel(chip->fwimsc & chip->real_wake,
1088 chip->addr + NMK_GPIO_FWIMSC);
1089
1090 clk_disable(chip->clk);
1091 }
1092}
1093
1094void nmk_gpio_wakeups_resume(void)
1095{
1096 int i;
1097
1098 for (i = 0; i < NUM_BANKS; i++) {
1099 struct nmk_gpio_chip *chip = nmk_gpio_chips[i];
1100
1101 if (!chip)
1102 break;
1103
1104 clk_enable(chip->clk);
1105
1106 writel(chip->rwimsc, chip->addr + NMK_GPIO_RWIMSC);
1107 writel(chip->fwimsc, chip->addr + NMK_GPIO_FWIMSC);
1108
1109 clk_disable(chip->clk);
1110 }
1111}
1112
1113/*
1114 * Read the pull up/pull down status.
1115 * A bit set in 'pull_up' means that pull up
1116 * is selected if pull is enabled in PDIS register.
1117 * Note: only pull up/down set via this driver can
1118 * be detected due to HW limitations.
1119 */
1120void nmk_gpio_read_pull(int gpio_bank, u32 *pull_up)
1121{
1122 if (gpio_bank < NUM_BANKS) {
1123 struct nmk_gpio_chip *chip = nmk_gpio_chips[gpio_bank];
1124
1125 if (!chip)
1126 return;
1127
1128 *pull_up = chip->pull_up;
1129 }
1130}
1131
1132/* 1036/*
1133 * We will allocate memory for the state container using devm* allocators 1037 * We will allocate memory for the state container using devm* allocators
1134 * binding to the first device reaching this point, it doesn't matter if 1038 * binding to the first device reaching this point, it doesn't matter if
diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-generic.c
index d5bf9fae2ddd..5020ae534479 100644
--- a/drivers/pinctrl/pinconf-generic.c
+++ b/drivers/pinctrl/pinconf-generic.c
@@ -53,7 +53,7 @@ static void pinconf_generic_dump_one(struct pinctrl_dev *pctldev,
53 struct seq_file *s, const char *gname, 53 struct seq_file *s, const char *gname,
54 unsigned pin, 54 unsigned pin,
55 const struct pin_config_item *items, 55 const struct pin_config_item *items,
56 int nitems) 56 int nitems, int *print_sep)
57{ 57{
58 int i; 58 int i;
59 59
@@ -75,8 +75,10 @@ static void pinconf_generic_dump_one(struct pinctrl_dev *pctldev,
75 seq_printf(s, "ERROR READING CONFIG SETTING %d ", i); 75 seq_printf(s, "ERROR READING CONFIG SETTING %d ", i);
76 continue; 76 continue;
77 } 77 }
78 /* Space between multiple configs */ 78 /* comma between multiple configs */
79 seq_puts(s, " "); 79 if (*print_sep)
80 seq_puts(s, ", ");
81 *print_sep = 1;
80 seq_puts(s, items[i].display); 82 seq_puts(s, items[i].display);
81 /* Print unit if available */ 83 /* Print unit if available */
82 if (items[i].has_arg) { 84 if (items[i].has_arg) {
@@ -105,19 +107,21 @@ void pinconf_generic_dump_pins(struct pinctrl_dev *pctldev, struct seq_file *s,
105 const char *gname, unsigned pin) 107 const char *gname, unsigned pin)
106{ 108{
107 const struct pinconf_ops *ops = pctldev->desc->confops; 109 const struct pinconf_ops *ops = pctldev->desc->confops;
110 int print_sep = 0;
108 111
109 if (!ops->is_generic) 112 if (!ops->is_generic)
110 return; 113 return;
111 114
112 /* generic parameters */ 115 /* generic parameters */
113 pinconf_generic_dump_one(pctldev, s, gname, pin, conf_items, 116 pinconf_generic_dump_one(pctldev, s, gname, pin, conf_items,
114 ARRAY_SIZE(conf_items)); 117 ARRAY_SIZE(conf_items), &print_sep);
115 /* driver-specific parameters */ 118 /* driver-specific parameters */
116 if (pctldev->desc->num_custom_params && 119 if (pctldev->desc->num_custom_params &&
117 pctldev->desc->custom_conf_items) 120 pctldev->desc->custom_conf_items)
118 pinconf_generic_dump_one(pctldev, s, gname, pin, 121 pinconf_generic_dump_one(pctldev, s, gname, pin,
119 pctldev->desc->custom_conf_items, 122 pctldev->desc->custom_conf_items,
120 pctldev->desc->num_custom_params); 123 pctldev->desc->num_custom_params,
124 &print_sep);
121} 125}
122 126
123void pinconf_generic_dump_config(struct pinctrl_dev *pctldev, 127void pinconf_generic_dump_config(struct pinctrl_dev *pctldev,
@@ -391,4 +395,12 @@ exit:
391} 395}
392EXPORT_SYMBOL_GPL(pinconf_generic_dt_node_to_map); 396EXPORT_SYMBOL_GPL(pinconf_generic_dt_node_to_map);
393 397
398void pinconf_generic_dt_free_map(struct pinctrl_dev *pctldev,
399 struct pinctrl_map *map,
400 unsigned num_maps)
401{
402 pinctrl_utils_free_map(pctldev, map, num_maps);
403}
404EXPORT_SYMBOL_GPL(pinconf_generic_dt_free_map);
405
394#endif 406#endif
diff --git a/drivers/pinctrl/pinconf.c b/drivers/pinctrl/pinconf.c
index 4dd7722f9935..799048f3c8d4 100644
--- a/drivers/pinctrl/pinconf.c
+++ b/drivers/pinctrl/pinconf.c
@@ -258,8 +258,7 @@ void pinconf_show_setting(struct seq_file *s,
258 case PIN_MAP_TYPE_CONFIGS_PIN: 258 case PIN_MAP_TYPE_CONFIGS_PIN:
259 desc = pin_desc_get(setting->pctldev, 259 desc = pin_desc_get(setting->pctldev,
260 setting->data.configs.group_or_pin); 260 setting->data.configs.group_or_pin);
261 seq_printf(s, "pin %s (%d)", 261 seq_printf(s, "pin %s (%d)", desc->name,
262 desc->name ? desc->name : "unnamed",
263 setting->data.configs.group_or_pin); 262 setting->data.configs.group_or_pin);
264 break; 263 break;
265 case PIN_MAP_TYPE_CONFIGS_GROUP: 264 case PIN_MAP_TYPE_CONFIGS_GROUP:
@@ -311,8 +310,7 @@ static int pinconf_pins_show(struct seq_file *s, void *what)
311 if (desc == NULL) 310 if (desc == NULL)
312 continue; 311 continue;
313 312
314 seq_printf(s, "pin %d (%s):", pin, 313 seq_printf(s, "pin %d (%s): ", pin, desc->name);
315 desc->name ? desc->name : "unnamed");
316 314
317 pinconf_dump_pin(pctldev, s, pin); 315 pinconf_dump_pin(pctldev, s, pin);
318 316
@@ -349,7 +347,7 @@ static int pinconf_groups_show(struct seq_file *s, void *what)
349 while (selector < ngroups) { 347 while (selector < ngroups) {
350 const char *gname = pctlops->get_group_name(pctldev, selector); 348 const char *gname = pctlops->get_group_name(pctldev, selector);
351 349
352 seq_printf(s, "%u (%s):", selector, gname); 350 seq_printf(s, "%u (%s): ", selector, gname);
353 pinconf_dump_group(pctldev, s, selector, gname); 351 pinconf_dump_group(pctldev, s, selector, gname);
354 seq_printf(s, "\n"); 352 seq_printf(s, "\n");
355 353
diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c
index a025b40d246b..28bbc1bb9e6c 100644
--- a/drivers/pinctrl/pinctrl-at91-pio4.c
+++ b/drivers/pinctrl/pinctrl-at91-pio4.c
@@ -20,7 +20,7 @@
20#include <linux/gpio.h> 20#include <linux/gpio.h>
21#include <linux/interrupt.h> 21#include <linux/interrupt.h>
22#include <linux/io.h> 22#include <linux/io.h>
23#include <linux/module.h> 23#include <linux/init.h>
24#include <linux/of.h> 24#include <linux/of.h>
25#include <linux/platform_device.h> 25#include <linux/platform_device.h>
26#include <linux/pinctrl/pinconf.h> 26#include <linux/pinctrl/pinconf.h>
@@ -421,8 +421,8 @@ static int atmel_pctl_get_group_pins(struct pinctrl_dev *pctldev,
421 return 0; 421 return 0;
422} 422}
423 423
424struct atmel_group *atmel_pctl_find_group_by_pin(struct pinctrl_dev *pctldev, 424static struct atmel_group *
425 unsigned pin) 425atmel_pctl_find_group_by_pin(struct pinctrl_dev *pctldev, unsigned pin)
426{ 426{
427 struct atmel_pioctrl *atmel_pioctrl = pinctrl_dev_get_drvdata(pctldev); 427 struct atmel_pioctrl *atmel_pioctrl = pinctrl_dev_get_drvdata(pctldev);
428 int i; 428 int i;
@@ -879,7 +879,6 @@ static const struct of_device_id atmel_pctrl_of_match[] = {
879 /* sentinel */ 879 /* sentinel */
880 } 880 }
881}; 881};
882MODULE_DEVICE_TABLE(of, atmel_pctrl_of_match);
883 882
884static int atmel_pinctrl_probe(struct platform_device *pdev) 883static int atmel_pinctrl_probe(struct platform_device *pdev)
885{ 884{
@@ -1074,28 +1073,13 @@ clk_prepare_enable_error:
1074 return ret; 1073 return ret;
1075} 1074}
1076 1075
1077int atmel_pinctrl_remove(struct platform_device *pdev)
1078{
1079 struct atmel_pioctrl *atmel_pioctrl = platform_get_drvdata(pdev);
1080
1081 irq_domain_remove(atmel_pioctrl->irq_domain);
1082 clk_disable_unprepare(atmel_pioctrl->clk);
1083 gpiochip_remove(atmel_pioctrl->gpio_chip);
1084
1085 return 0;
1086}
1087
1088static struct platform_driver atmel_pinctrl_driver = { 1076static struct platform_driver atmel_pinctrl_driver = {
1089 .driver = { 1077 .driver = {
1090 .name = "pinctrl-at91-pio4", 1078 .name = "pinctrl-at91-pio4",
1091 .of_match_table = atmel_pctrl_of_match, 1079 .of_match_table = atmel_pctrl_of_match,
1092 .pm = &atmel_pctrl_pm_ops, 1080 .pm = &atmel_pctrl_pm_ops,
1081 .suppress_bind_attrs = true,
1093 }, 1082 },
1094 .probe = atmel_pinctrl_probe, 1083 .probe = atmel_pinctrl_probe,
1095 .remove = atmel_pinctrl_remove,
1096}; 1084};
1097module_platform_driver(atmel_pinctrl_driver); 1085builtin_platform_driver(atmel_pinctrl_driver);
1098
1099MODULE_AUTHOR(Ludovic Desroches <ludovic.desroches@atmel.com>);
1100MODULE_DESCRIPTION("Atmel PIO4 pinctrl driver");
1101MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index b7c0d6f7c046..80daead3a5a1 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -9,7 +9,6 @@
9#include <linux/clk.h> 9#include <linux/clk.h>
10#include <linux/err.h> 10#include <linux/err.h>
11#include <linux/init.h> 11#include <linux/init.h>
12#include <linux/module.h>
13#include <linux/of.h> 12#include <linux/of.h>
14#include <linux/of_device.h> 13#include <linux/of_device.h>
15#include <linux/of_address.h> 14#include <linux/of_address.h>
@@ -189,7 +188,7 @@ struct at91_pinctrl {
189 struct at91_pinctrl_mux_ops *ops; 188 struct at91_pinctrl_mux_ops *ops;
190}; 189};
191 190
192static const inline struct at91_pin_group *at91_pinctrl_find_group_by_name( 191static inline const struct at91_pin_group *at91_pinctrl_find_group_by_name(
193 const struct at91_pinctrl *info, 192 const struct at91_pinctrl *info,
194 const char *name) 193 const char *name)
195{ 194{
@@ -1818,13 +1817,3 @@ static int __init at91_pinctrl_init(void)
1818 return platform_register_drivers(drivers, ARRAY_SIZE(drivers)); 1817 return platform_register_drivers(drivers, ARRAY_SIZE(drivers));
1819} 1818}
1820arch_initcall(at91_pinctrl_init); 1819arch_initcall(at91_pinctrl_init);
1821
1822static void __exit at91_pinctrl_exit(void)
1823{
1824 platform_unregister_drivers(drivers, ARRAY_SIZE(drivers));
1825}
1826
1827module_exit(at91_pinctrl_exit);
1828MODULE_AUTHOR("Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>");
1829MODULE_DESCRIPTION("Atmel AT91 pinctrl driver");
1830MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/pinctrl-digicolor.c b/drivers/pinctrl/pinctrl-digicolor.c
index 30ee56427f56..639a57ecc7c2 100644
--- a/drivers/pinctrl/pinctrl-digicolor.c
+++ b/drivers/pinctrl/pinctrl-digicolor.c
@@ -15,7 +15,7 @@
15 * - Pin pad configuration (pull up/down, strength) 15 * - Pin pad configuration (pull up/down, strength)
16 */ 16 */
17 17
18#include <linux/module.h> 18#include <linux/init.h>
19#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20#include <linux/of.h> 20#include <linux/of.h>
21#include <linux/of_device.h> 21#include <linux/of_device.h>
@@ -335,27 +335,17 @@ static int dc_pinctrl_probe(struct platform_device *pdev)
335 return dc_gpiochip_add(pmap, pdev->dev.of_node); 335 return dc_gpiochip_add(pmap, pdev->dev.of_node);
336} 336}
337 337
338static int dc_pinctrl_remove(struct platform_device *pdev)
339{
340 struct dc_pinmap *pmap = platform_get_drvdata(pdev);
341
342 gpiochip_remove(&pmap->chip);
343
344 return 0;
345}
346
347static const struct of_device_id dc_pinctrl_ids[] = { 338static const struct of_device_id dc_pinctrl_ids[] = {
348 { .compatible = "cnxt,cx92755-pinctrl" }, 339 { .compatible = "cnxt,cx92755-pinctrl" },
349 { /* sentinel */ } 340 { /* sentinel */ }
350}; 341};
351MODULE_DEVICE_TABLE(of, dc_pinctrl_ids);
352 342
353static struct platform_driver dc_pinctrl_driver = { 343static struct platform_driver dc_pinctrl_driver = {
354 .driver = { 344 .driver = {
355 .name = DRIVER_NAME, 345 .name = DRIVER_NAME,
356 .of_match_table = dc_pinctrl_ids, 346 .of_match_table = dc_pinctrl_ids,
347 .suppress_bind_attrs = true,
357 }, 348 },
358 .probe = dc_pinctrl_probe, 349 .probe = dc_pinctrl_probe,
359 .remove = dc_pinctrl_remove,
360}; 350};
361module_platform_driver(dc_pinctrl_driver); 351builtin_platform_driver(dc_pinctrl_driver);
diff --git a/drivers/pinctrl/pinctrl-lpc18xx.c b/drivers/pinctrl/pinctrl-lpc18xx.c
index 8a931c7ba2ff..e053f1fa5512 100644
--- a/drivers/pinctrl/pinctrl-lpc18xx.c
+++ b/drivers/pinctrl/pinctrl-lpc18xx.c
@@ -11,7 +11,7 @@
11#include <linux/bitops.h> 11#include <linux/bitops.h>
12#include <linux/clk.h> 12#include <linux/clk.h>
13#include <linux/io.h> 13#include <linux/io.h>
14#include <linux/module.h> 14#include <linux/init.h>
15#include <linux/of.h> 15#include <linux/of.h>
16#include <linux/of_device.h> 16#include <linux/of_device.h>
17#include <linux/pinctrl/pinctrl.h> 17#include <linux/pinctrl/pinctrl.h>
@@ -1365,31 +1365,17 @@ static int lpc18xx_scu_probe(struct platform_device *pdev)
1365 return 0; 1365 return 0;
1366} 1366}
1367 1367
1368static int lpc18xx_scu_remove(struct platform_device *pdev)
1369{
1370 struct lpc18xx_scu_data *scu = platform_get_drvdata(pdev);
1371
1372 clk_disable_unprepare(scu->clk);
1373
1374 return 0;
1375}
1376
1377static const struct of_device_id lpc18xx_scu_match[] = { 1368static const struct of_device_id lpc18xx_scu_match[] = {
1378 { .compatible = "nxp,lpc1850-scu" }, 1369 { .compatible = "nxp,lpc1850-scu" },
1379 {}, 1370 {},
1380}; 1371};
1381MODULE_DEVICE_TABLE(of, lpc18xx_scu_match);
1382 1372
1383static struct platform_driver lpc18xx_scu_driver = { 1373static struct platform_driver lpc18xx_scu_driver = {
1384 .probe = lpc18xx_scu_probe, 1374 .probe = lpc18xx_scu_probe,
1385 .remove = lpc18xx_scu_remove,
1386 .driver = { 1375 .driver = {
1387 .name = "lpc18xx-scu", 1376 .name = "lpc18xx-scu",
1388 .of_match_table = lpc18xx_scu_match, 1377 .of_match_table = lpc18xx_scu_match,
1378 .suppress_bind_attrs = true,
1389 }, 1379 },
1390}; 1380};
1391module_platform_driver(lpc18xx_scu_driver); 1381builtin_platform_driver(lpc18xx_scu_driver);
1392
1393MODULE_AUTHOR("Joachim Eastwood <manabian@gmail.com>");
1394MODULE_DESCRIPTION("Pinctrl driver for NXP LPC18xx/43xx SCU");
1395MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/pinctrl-max77620.c b/drivers/pinctrl/pinctrl-max77620.c
new file mode 100644
index 000000000000..d9ff53e8f715
--- /dev/null
+++ b/drivers/pinctrl/pinctrl-max77620.c
@@ -0,0 +1,673 @@
1/*
2 * MAX77620 pin control driver.
3 *
4 * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
5 *
6 * Author:
7 * Chaitanya Bandi <bandik@nvidia.com>
8 * Laxman Dewangan <ldewangan@nvidia.com>
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms and conditions of the GNU General Public License,
12 * version 2, as published by the Free Software Foundation.
13 */
14
15#include <linux/mfd/max77620.h>
16#include <linux/module.h>
17#include <linux/of.h>
18#include <linux/pinctrl/pinctrl.h>
19#include <linux/pinctrl/pinconf-generic.h>
20#include <linux/pinctrl/pinconf.h>
21#include <linux/pinctrl/pinmux.h>
22#include <linux/platform_device.h>
23#include <linux/regmap.h>
24
25#include "core.h"
26#include "pinconf.h"
27#include "pinctrl-utils.h"
28
29#define MAX77620_PIN_NUM 8
30
31enum max77620_pin_ppdrv {
32 MAX77620_PIN_UNCONFIG_DRV,
33 MAX77620_PIN_OD_DRV,
34 MAX77620_PIN_PP_DRV,
35};
36
37enum max77620_pinconf_param {
38 MAX77620_ACTIVE_FPS_SOURCE = PIN_CONFIG_END + 1,
39 MAX77620_ACTIVE_FPS_POWER_ON_SLOTS,
40 MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS,
41 MAX77620_SUSPEND_FPS_SOURCE,
42 MAX77620_SUSPEND_FPS_POWER_ON_SLOTS,
43 MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS,
44};
45
46struct max77620_pin_function {
47 const char *name;
48 const char * const *groups;
49 unsigned int ngroups;
50 int mux_option;
51};
52
53static const struct pinconf_generic_params max77620_cfg_params[] = {
54 {
55 .property = "maxim,active-fps-source",
56 .param = MAX77620_ACTIVE_FPS_SOURCE,
57 }, {
58 .property = "maxim,active-fps-power-up-slot",
59 .param = MAX77620_ACTIVE_FPS_POWER_ON_SLOTS,
60 }, {
61 .property = "maxim,active-fps-power-down-slot",
62 .param = MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS,
63 }, {
64 .property = "maxim,suspend-fps-source",
65 .param = MAX77620_SUSPEND_FPS_SOURCE,
66 }, {
67 .property = "maxim,suspend-fps-power-up-slot",
68 .param = MAX77620_SUSPEND_FPS_POWER_ON_SLOTS,
69 }, {
70 .property = "maxim,suspend-fps-power-down-slot",
71 .param = MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS,
72 },
73};
74
75enum max77620_alternate_pinmux_option {
76 MAX77620_PINMUX_GPIO = 0,
77 MAX77620_PINMUX_LOW_POWER_MODE_CONTROL_IN = 1,
78 MAX77620_PINMUX_FLEXIBLE_POWER_SEQUENCER_OUT = 2,
79 MAX77620_PINMUX_32K_OUT1 = 3,
80 MAX77620_PINMUX_SD0_DYNAMIC_VOLTAGE_SCALING_IN = 4,
81 MAX77620_PINMUX_SD1_DYNAMIC_VOLTAGE_SCALING_IN = 5,
82 MAX77620_PINMUX_REFERENCE_OUT = 6,
83};
84
85struct max77620_pingroup {
86 const char *name;
87 const unsigned int pins[1];
88 unsigned int npins;
89 enum max77620_alternate_pinmux_option alt_option;
90};
91
92struct max77620_pin_info {
93 enum max77620_pin_ppdrv drv_type;
94 int pull_config;
95};
96
97struct max77620_fps_config {
98 int active_fps_src;
99 int active_power_up_slots;
100 int active_power_down_slots;
101 int suspend_fps_src;
102 int suspend_power_up_slots;
103 int suspend_power_down_slots;
104};
105
106struct max77620_pctrl_info {
107 struct device *dev;
108 struct pinctrl_dev *pctl;
109 struct regmap *rmap;
110 int pins_current_opt[MAX77620_GPIO_NR];
111 const struct max77620_pin_function *functions;
112 unsigned int num_functions;
113 const struct max77620_pingroup *pin_groups;
114 int num_pin_groups;
115 const struct pinctrl_pin_desc *pins;
116 unsigned int num_pins;
117 struct max77620_pin_info pin_info[MAX77620_PIN_NUM];
118 struct max77620_fps_config fps_config[MAX77620_PIN_NUM];
119};
120
121static const struct pinctrl_pin_desc max77620_pins_desc[] = {
122 PINCTRL_PIN(MAX77620_GPIO0, "gpio0"),
123 PINCTRL_PIN(MAX77620_GPIO1, "gpio1"),
124 PINCTRL_PIN(MAX77620_GPIO2, "gpio2"),
125 PINCTRL_PIN(MAX77620_GPIO3, "gpio3"),
126 PINCTRL_PIN(MAX77620_GPIO4, "gpio4"),
127 PINCTRL_PIN(MAX77620_GPIO5, "gpio5"),
128 PINCTRL_PIN(MAX77620_GPIO6, "gpio6"),
129 PINCTRL_PIN(MAX77620_GPIO7, "gpio7"),
130};
131
132static const char * const gpio_groups[] = {
133 "gpio0",
134 "gpio1",
135 "gpio2",
136 "gpio3",
137 "gpio4",
138 "gpio5",
139 "gpio6",
140 "gpio7",
141};
142
143#define FUNCTION_GROUP(fname, mux) \
144 { \
145 .name = fname, \
146 .groups = gpio_groups, \
147 .ngroups = ARRAY_SIZE(gpio_groups), \
148 .mux_option = MAX77620_PINMUX_##mux, \
149 }
150
151static const struct max77620_pin_function max77620_pin_function[] = {
152 FUNCTION_GROUP("gpio", GPIO),
153 FUNCTION_GROUP("lpm-control-in", LOW_POWER_MODE_CONTROL_IN),
154 FUNCTION_GROUP("fps-out", FLEXIBLE_POWER_SEQUENCER_OUT),
155 FUNCTION_GROUP("32k-out1", 32K_OUT1),
156 FUNCTION_GROUP("sd0-dvs-in", SD0_DYNAMIC_VOLTAGE_SCALING_IN),
157 FUNCTION_GROUP("sd1-dvs-in", SD1_DYNAMIC_VOLTAGE_SCALING_IN),
158 FUNCTION_GROUP("reference-out", REFERENCE_OUT),
159};
160
161#define MAX77620_PINGROUP(pg_name, pin_id, option) \
162 { \
163 .name = #pg_name, \
164 .pins = {MAX77620_##pin_id}, \
165 .npins = 1, \
166 .alt_option = MAX77620_PINMUX_##option, \
167 }
168
169static const struct max77620_pingroup max77620_pingroups[] = {
170 MAX77620_PINGROUP(gpio0, GPIO0, LOW_POWER_MODE_CONTROL_IN),
171 MAX77620_PINGROUP(gpio1, GPIO1, FLEXIBLE_POWER_SEQUENCER_OUT),
172 MAX77620_PINGROUP(gpio2, GPIO2, FLEXIBLE_POWER_SEQUENCER_OUT),
173 MAX77620_PINGROUP(gpio3, GPIO3, FLEXIBLE_POWER_SEQUENCER_OUT),
174 MAX77620_PINGROUP(gpio4, GPIO4, 32K_OUT1),
175 MAX77620_PINGROUP(gpio5, GPIO5, SD0_DYNAMIC_VOLTAGE_SCALING_IN),
176 MAX77620_PINGROUP(gpio6, GPIO6, SD1_DYNAMIC_VOLTAGE_SCALING_IN),
177 MAX77620_PINGROUP(gpio7, GPIO7, REFERENCE_OUT),
178};
179
180static int max77620_pinctrl_get_groups_count(struct pinctrl_dev *pctldev)
181{
182 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
183
184 return mpci->num_pin_groups;
185}
186
187static const char *max77620_pinctrl_get_group_name(
188 struct pinctrl_dev *pctldev, unsigned int group)
189{
190 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
191
192 return mpci->pin_groups[group].name;
193}
194
195static int max77620_pinctrl_get_group_pins(
196 struct pinctrl_dev *pctldev, unsigned int group,
197 const unsigned int **pins, unsigned int *num_pins)
198{
199 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
200
201 *pins = mpci->pin_groups[group].pins;
202 *num_pins = mpci->pin_groups[group].npins;
203
204 return 0;
205}
206
207static const struct pinctrl_ops max77620_pinctrl_ops = {
208 .get_groups_count = max77620_pinctrl_get_groups_count,
209 .get_group_name = max77620_pinctrl_get_group_name,
210 .get_group_pins = max77620_pinctrl_get_group_pins,
211 .dt_node_to_map = pinconf_generic_dt_node_to_map_pin,
212 .dt_free_map = pinctrl_utils_free_map,
213};
214
215static int max77620_pinctrl_get_funcs_count(struct pinctrl_dev *pctldev)
216{
217 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
218
219 return mpci->num_functions;
220}
221
222static const char *max77620_pinctrl_get_func_name(struct pinctrl_dev *pctldev,
223 unsigned int function)
224{
225 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
226
227 return mpci->functions[function].name;
228}
229
230static int max77620_pinctrl_get_func_groups(struct pinctrl_dev *pctldev,
231 unsigned int function,
232 const char * const **groups,
233 unsigned int * const num_groups)
234{
235 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
236
237 *groups = mpci->functions[function].groups;
238 *num_groups = mpci->functions[function].ngroups;
239
240 return 0;
241}
242
243static int max77620_pinctrl_enable(struct pinctrl_dev *pctldev,
244 unsigned int function, unsigned int group)
245{
246 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
247 u8 val;
248 int ret;
249
250 if (function == MAX77620_PINMUX_GPIO) {
251 val = 0;
252 } else if (function == mpci->pin_groups[group].alt_option) {
253 val = 1 << group;
254 } else {
255 dev_err(mpci->dev, "GPIO %u doesn't have function %u\n",
256 group, function);
257 return -EINVAL;
258 }
259 ret = regmap_update_bits(mpci->rmap, MAX77620_REG_AME_GPIO,
260 BIT(group), val);
261 if (ret < 0)
262 dev_err(mpci->dev, "REG AME GPIO update failed: %d\n", ret);
263
264 return ret;
265}
266
267static const struct pinmux_ops max77620_pinmux_ops = {
268 .get_functions_count = max77620_pinctrl_get_funcs_count,
269 .get_function_name = max77620_pinctrl_get_func_name,
270 .get_function_groups = max77620_pinctrl_get_func_groups,
271 .set_mux = max77620_pinctrl_enable,
272};
273
274static int max77620_pinconf_get(struct pinctrl_dev *pctldev,
275 unsigned int pin, unsigned long *config)
276{
277 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
278 struct device *dev = mpci->dev;
279 enum pin_config_param param = pinconf_to_config_param(*config);
280 unsigned int val;
281 int arg = 0;
282 int ret;
283
284 switch (param) {
285 case PIN_CONFIG_DRIVE_OPEN_DRAIN:
286 if (mpci->pin_info[pin].drv_type == MAX77620_PIN_OD_DRV)
287 arg = 1;
288 break;
289
290 case PIN_CONFIG_DRIVE_PUSH_PULL:
291 if (mpci->pin_info[pin].drv_type == MAX77620_PIN_PP_DRV)
292 arg = 1;
293 break;
294
295 case PIN_CONFIG_BIAS_PULL_UP:
296 ret = regmap_read(mpci->rmap, MAX77620_REG_PUE_GPIO, &val);
297 if (ret < 0) {
298 dev_err(dev, "Reg PUE_GPIO read failed: %d\n", ret);
299 return ret;
300 }
301 if (val & BIT(pin))
302 arg = 1;
303 break;
304
305 case PIN_CONFIG_BIAS_PULL_DOWN:
306 ret = regmap_read(mpci->rmap, MAX77620_REG_PDE_GPIO, &val);
307 if (ret < 0) {
308 dev_err(dev, "Reg PDE_GPIO read failed: %d\n", ret);
309 return ret;
310 }
311 if (val & BIT(pin))
312 arg = 1;
313 break;
314
315 default:
316 dev_err(dev, "Properties not supported\n");
317 return -ENOTSUPP;
318 }
319
320 *config = pinconf_to_config_packed(param, (u16)arg);
321
322 return 0;
323}
324
325static int max77620_get_default_fps(struct max77620_pctrl_info *mpci,
326 int addr, int *fps)
327{
328 unsigned int val;
329 int ret;
330
331 ret = regmap_read(mpci->rmap, addr, &val);
332 if (ret < 0) {
333 dev_err(mpci->dev, "Reg PUE_GPIO read failed: %d\n", ret);
334 return ret;
335 }
336 *fps = (val & MAX77620_FPS_SRC_MASK) >> MAX77620_FPS_SRC_SHIFT;
337
338 return 0;
339}
340
341static int max77620_set_fps_param(struct max77620_pctrl_info *mpci,
342 int pin, int param)
343{
344 struct max77620_fps_config *fps_config = &mpci->fps_config[pin];
345 int addr, ret;
346 int param_val;
347 int mask, shift;
348
349 if ((pin < MAX77620_GPIO1) || (pin > MAX77620_GPIO3))
350 return 0;
351
352 addr = MAX77620_REG_FPS_GPIO1 + pin - 1;
353 switch (param) {
354 case MAX77620_ACTIVE_FPS_SOURCE:
355 case MAX77620_SUSPEND_FPS_SOURCE:
356 mask = MAX77620_FPS_SRC_MASK;
357 shift = MAX77620_FPS_SRC_SHIFT;
358 param_val = fps_config->active_fps_src;
359 if (param == MAX77620_SUSPEND_FPS_SOURCE)
360 param_val = fps_config->suspend_fps_src;
361 break;
362
363 case MAX77620_ACTIVE_FPS_POWER_ON_SLOTS:
364 case MAX77620_SUSPEND_FPS_POWER_ON_SLOTS:
365 mask = MAX77620_FPS_PU_PERIOD_MASK;
366 shift = MAX77620_FPS_PU_PERIOD_SHIFT;
367 param_val = fps_config->active_power_up_slots;
368 if (param == MAX77620_SUSPEND_FPS_POWER_ON_SLOTS)
369 param_val = fps_config->suspend_power_up_slots;
370 break;
371
372 case MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS:
373 case MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS:
374 mask = MAX77620_FPS_PD_PERIOD_MASK;
375 shift = MAX77620_FPS_PD_PERIOD_SHIFT;
376 param_val = fps_config->active_power_down_slots;
377 if (param == MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS)
378 param_val = fps_config->suspend_power_down_slots;
379 break;
380
381 default:
382 dev_err(mpci->dev, "Invalid parameter %d for pin %d\n",
383 param, pin);
384 return -EINVAL;
385 }
386
387 if (param_val < 0)
388 return 0;
389
390 ret = regmap_update_bits(mpci->rmap, addr, mask, param_val << shift);
391 if (ret < 0)
392 dev_err(mpci->dev, "Reg 0x%02x update failed %d\n", addr, ret);
393
394 return ret;
395}
396
397static int max77620_pinconf_set(struct pinctrl_dev *pctldev,
398 unsigned int pin, unsigned long *configs,
399 unsigned int num_configs)
400{
401 struct max77620_pctrl_info *mpci = pinctrl_dev_get_drvdata(pctldev);
402 struct device *dev = mpci->dev;
403 struct max77620_fps_config *fps_config;
404 int param;
405 u16 param_val;
406 unsigned int val;
407 unsigned int pu_val;
408 unsigned int pd_val;
409 int addr, ret;
410 int i;
411
412 for (i = 0; i < num_configs; i++) {
413 param = pinconf_to_config_param(configs[i]);
414 param_val = pinconf_to_config_argument(configs[i]);
415
416 switch (param) {
417 case PIN_CONFIG_DRIVE_OPEN_DRAIN:
418 val = param_val ? 0 : 1;
419 ret = regmap_update_bits(mpci->rmap,
420 MAX77620_REG_GPIO0 + pin,
421 MAX77620_CNFG_GPIO_DRV_MASK,
422 val);
423 if (ret < 0) {
424 dev_err(dev, "Reg 0x%02x update failed %d\n",
425 MAX77620_REG_GPIO0 + pin, ret);
426 return ret;
427 }
428 mpci->pin_info[pin].drv_type = val ?
429 MAX77620_PIN_PP_DRV : MAX77620_PIN_OD_DRV;
430 break;
431
432 case PIN_CONFIG_DRIVE_PUSH_PULL:
433 val = param_val ? 1 : 0;
434 ret = regmap_update_bits(mpci->rmap,
435 MAX77620_REG_GPIO0 + pin,
436 MAX77620_CNFG_GPIO_DRV_MASK,
437 val);
438 if (ret < 0) {
439 dev_err(dev, "Reg 0x%02x update failed %d\n",
440 MAX77620_REG_GPIO0 + pin, ret);
441 return ret;
442 }
443 mpci->pin_info[pin].drv_type = val ?
444 MAX77620_PIN_PP_DRV : MAX77620_PIN_OD_DRV;
445 break;
446
447 case MAX77620_ACTIVE_FPS_SOURCE:
448 case MAX77620_ACTIVE_FPS_POWER_ON_SLOTS:
449 case MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS:
450 if ((pin < MAX77620_GPIO1) || (pin > MAX77620_GPIO3))
451 return -EINVAL;
452
453 fps_config = &mpci->fps_config[pin];
454
455 if ((param == MAX77620_ACTIVE_FPS_SOURCE) &&
456 (param_val == MAX77620_FPS_SRC_DEF)) {
457 addr = MAX77620_REG_FPS_GPIO1 + pin - 1;
458 ret = max77620_get_default_fps(
459 mpci, addr,
460 &fps_config->active_fps_src);
461 if (ret < 0)
462 return ret;
463 break;
464 }
465
466 if (param == MAX77620_ACTIVE_FPS_SOURCE)
467 fps_config->active_fps_src = param_val;
468 else if (param == MAX77620_ACTIVE_FPS_POWER_ON_SLOTS)
469 fps_config->active_power_up_slots = param_val;
470 else
471 fps_config->active_power_down_slots = param_val;
472
473 ret = max77620_set_fps_param(mpci, pin, param);
474 if (ret < 0)
475 return ret;
476 break;
477
478 case MAX77620_SUSPEND_FPS_SOURCE:
479 case MAX77620_SUSPEND_FPS_POWER_ON_SLOTS:
480 case MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS:
481 if ((pin < MAX77620_GPIO1) || (pin > MAX77620_GPIO3))
482 return -EINVAL;
483
484 fps_config = &mpci->fps_config[pin];
485
486 if ((param == MAX77620_SUSPEND_FPS_SOURCE) &&
487 (param_val == MAX77620_FPS_SRC_DEF)) {
488 addr = MAX77620_REG_FPS_GPIO1 + pin - 1;
489 ret = max77620_get_default_fps(
490 mpci, addr,
491 &fps_config->suspend_fps_src);
492 if (ret < 0)
493 return ret;
494 break;
495 }
496
497 if (param == MAX77620_SUSPEND_FPS_SOURCE)
498 fps_config->suspend_fps_src = param_val;
499 else if (param == MAX77620_SUSPEND_FPS_POWER_ON_SLOTS)
500 fps_config->suspend_power_up_slots = param_val;
501 else
502 fps_config->suspend_power_down_slots =
503 param_val;
504 break;
505
506 case PIN_CONFIG_BIAS_PULL_UP:
507 case PIN_CONFIG_BIAS_PULL_DOWN:
508 pu_val = (param == PIN_CONFIG_BIAS_PULL_UP) ?
509 BIT(pin) : 0;
510 pd_val = (param == PIN_CONFIG_BIAS_PULL_DOWN) ?
511 BIT(pin) : 0;
512
513 ret = regmap_update_bits(mpci->rmap,
514 MAX77620_REG_PUE_GPIO,
515 BIT(pin), pu_val);
516 if (ret < 0) {
517 dev_err(dev, "PUE_GPIO update failed: %d\n",
518 ret);
519 return ret;
520 }
521
522 ret = regmap_update_bits(mpci->rmap,
523 MAX77620_REG_PDE_GPIO,
524 BIT(pin), pd_val);
525 if (ret < 0) {
526 dev_err(dev, "PDE_GPIO update failed: %d\n",
527 ret);
528 return ret;
529 }
530 break;
531
532 default:
533 dev_err(dev, "Properties not supported\n");
534 return -ENOTSUPP;
535 }
536 }
537
538 return 0;
539}
540
541static const struct pinconf_ops max77620_pinconf_ops = {
542 .pin_config_get = max77620_pinconf_get,
543 .pin_config_set = max77620_pinconf_set,
544};
545
546static struct pinctrl_desc max77620_pinctrl_desc = {
547 .pctlops = &max77620_pinctrl_ops,
548 .pmxops = &max77620_pinmux_ops,
549 .confops = &max77620_pinconf_ops,
550};
551
552static int max77620_pinctrl_probe(struct platform_device *pdev)
553{
554 struct max77620_chip *max77620 = dev_get_drvdata(pdev->dev.parent);
555 struct max77620_pctrl_info *mpci;
556 int i;
557
558 mpci = devm_kzalloc(&pdev->dev, sizeof(*mpci), GFP_KERNEL);
559 if (!mpci)
560 return -ENOMEM;
561
562 mpci->dev = &pdev->dev;
563 mpci->dev->of_node = pdev->dev.parent->of_node;
564 mpci->rmap = max77620->rmap;
565
566 mpci->pins = max77620_pins_desc;
567 mpci->num_pins = ARRAY_SIZE(max77620_pins_desc);
568 mpci->functions = max77620_pin_function;
569 mpci->num_functions = ARRAY_SIZE(max77620_pin_function);
570 mpci->pin_groups = max77620_pingroups;
571 mpci->num_pin_groups = ARRAY_SIZE(max77620_pingroups);
572 platform_set_drvdata(pdev, mpci);
573
574 max77620_pinctrl_desc.name = dev_name(&pdev->dev);
575 max77620_pinctrl_desc.pins = max77620_pins_desc;
576 max77620_pinctrl_desc.npins = ARRAY_SIZE(max77620_pins_desc);
577 max77620_pinctrl_desc.num_custom_params =
578 ARRAY_SIZE(max77620_cfg_params);
579 max77620_pinctrl_desc.custom_params = max77620_cfg_params;
580
581 for (i = 0; i < MAX77620_PIN_NUM; ++i) {
582 mpci->fps_config[i].active_fps_src = -1;
583 mpci->fps_config[i].active_power_up_slots = -1;
584 mpci->fps_config[i].active_power_down_slots = -1;
585 mpci->fps_config[i].suspend_fps_src = -1;
586 mpci->fps_config[i].suspend_power_up_slots = -1;
587 mpci->fps_config[i].suspend_power_down_slots = -1;
588 }
589
590 mpci->pctl = devm_pinctrl_register(&pdev->dev, &max77620_pinctrl_desc,
591 mpci);
592 if (IS_ERR(mpci->pctl)) {
593 dev_err(&pdev->dev, "Couldn't register pinctrl driver\n");
594 return PTR_ERR(mpci->pctl);
595 }
596
597 return 0;
598}
599
600#ifdef CONFIG_PM_SLEEP
601static int max77620_suspend_fps_param[] = {
602 MAX77620_SUSPEND_FPS_SOURCE,
603 MAX77620_SUSPEND_FPS_POWER_ON_SLOTS,
604 MAX77620_SUSPEND_FPS_POWER_DOWN_SLOTS,
605};
606
607static int max77620_active_fps_param[] = {
608 MAX77620_ACTIVE_FPS_SOURCE,
609 MAX77620_ACTIVE_FPS_POWER_ON_SLOTS,
610 MAX77620_ACTIVE_FPS_POWER_DOWN_SLOTS,
611};
612
613static int max77620_pinctrl_suspend(struct device *dev)
614{
615 struct max77620_pctrl_info *mpci = dev_get_drvdata(dev);
616 int pin, p;
617
618 for (pin = 0; pin < MAX77620_PIN_NUM; ++pin) {
619 if ((pin < MAX77620_GPIO1) || (pin > MAX77620_GPIO3))
620 continue;
621 for (p = 0; p < 3; ++p)
622 max77620_set_fps_param(
623 mpci, pin, max77620_suspend_fps_param[p]);
624 }
625
626 return 0;
627};
628
629static int max77620_pinctrl_resume(struct device *dev)
630{
631 struct max77620_pctrl_info *mpci = dev_get_drvdata(dev);
632 int pin, p;
633
634 for (pin = 0; pin < MAX77620_PIN_NUM; ++pin) {
635 if ((pin < MAX77620_GPIO1) || (pin > MAX77620_GPIO3))
636 continue;
637 for (p = 0; p < 3; ++p)
638 max77620_set_fps_param(
639 mpci, pin, max77620_active_fps_param[p]);
640 }
641
642 return 0;
643}
644#endif
645
646static const struct dev_pm_ops max77620_pinctrl_pm_ops = {
647 SET_SYSTEM_SLEEP_PM_OPS(
648 max77620_pinctrl_suspend, max77620_pinctrl_resume)
649};
650
651static const struct platform_device_id max77620_pinctrl_devtype[] = {
652 { .name = "max77620-pinctrl", },
653 { .name = "max20024-pinctrl", },
654 {},
655};
656MODULE_DEVICE_TABLE(platform, max77620_pinctrl_devtype);
657
658static struct platform_driver max77620_pinctrl_driver = {
659 .driver = {
660 .name = "max77620-pinctrl",
661 .pm = &max77620_pinctrl_pm_ops,
662 },
663 .probe = max77620_pinctrl_probe,
664 .id_table = max77620_pinctrl_devtype,
665};
666
667module_platform_driver(max77620_pinctrl_driver);
668
669MODULE_DESCRIPTION("MAX77620/MAX20024 pin control driver");
670MODULE_AUTHOR("Chaitanya Bandi<bandik@nvidia.com>");
671MODULE_AUTHOR("Laxman Dewangan<ldewangan@nvidia.com>");
672MODULE_ALIAS("platform:max77620-pinctrl");
673MODULE_LICENSE("GPL v2");
diff --git a/drivers/pinctrl/pinctrl-oxnas.c b/drivers/pinctrl/pinctrl-oxnas.c
new file mode 100644
index 000000000000..917a7d2535d7
--- /dev/null
+++ b/drivers/pinctrl/pinctrl-oxnas.c
@@ -0,0 +1,846 @@
1/*
2 * Oxford Semiconductor OXNAS SoC Family pinctrl driver
3 *
4 * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
5 *
6 * Based on pinctrl-pic32.c
7 * Joshua Henderson, <joshua.henderson@microchip.com>
8 * Copyright (C) 2015 Microchip Technology Inc. All rights reserved.
9 *
10 * This program is free software; you can distribute it and/or modify it
11 * under the terms of the GNU General Public License (Version 2) as
12 * published by the Free Software Foundation.
13 *
14 * This program is distributed in the hope it will be useful, but WITHOUT
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
17 * for more details.
18 */
19#include <linux/gpio/driver.h>
20#include <linux/interrupt.h>
21#include <linux/io.h>
22#include <linux/irq.h>
23#include <linux/of.h>
24#include <linux/of_device.h>
25#include <linux/pinctrl/pinconf.h>
26#include <linux/pinctrl/pinconf-generic.h>
27#include <linux/pinctrl/pinctrl.h>
28#include <linux/pinctrl/pinmux.h>
29#include <linux/platform_device.h>
30#include <linux/slab.h>
31#include <linux/regmap.h>
32#include <linux/mfd/syscon.h>
33
34#include "pinctrl-utils.h"
35
36#define PINS_PER_BANK 32
37
38#define GPIO_BANK_START(bank) ((bank) * PINS_PER_BANK)
39
40/* Regmap Offsets */
41#define PINMUX_PRIMARY_SEL0 0x0c
42#define PINMUX_SECONDARY_SEL0 0x14
43#define PINMUX_TERTIARY_SEL0 0x8c
44#define PINMUX_PRIMARY_SEL1 0x10
45#define PINMUX_SECONDARY_SEL1 0x18
46#define PINMUX_TERTIARY_SEL1 0x90
47#define PINMUX_PULLUP_CTRL0 0xac
48#define PINMUX_PULLUP_CTRL1 0xb0
49
50/* GPIO Registers */
51#define INPUT_VALUE 0x00
52#define OUTPUT_EN 0x04
53#define IRQ_PENDING 0x0c
54#define OUTPUT_SET 0x14
55#define OUTPUT_CLEAR 0x18
56#define OUTPUT_EN_SET 0x1c
57#define OUTPUT_EN_CLEAR 0x20
58#define RE_IRQ_ENABLE 0x28
59#define FE_IRQ_ENABLE 0x2c
60
61struct oxnas_function {
62 const char *name;
63 const char * const *groups;
64 unsigned int ngroups;
65};
66
67struct oxnas_pin_group {
68 const char *name;
69 unsigned int pin;
70 unsigned int bank;
71 struct oxnas_desc_function *functions;
72};
73
74struct oxnas_desc_function {
75 const char *name;
76 unsigned int fct;
77};
78
79struct oxnas_gpio_bank {
80 void __iomem *reg_base;
81 struct gpio_chip gpio_chip;
82 struct irq_chip irq_chip;
83 unsigned int id;
84};
85
86struct oxnas_pinctrl {
87 struct regmap *regmap;
88 struct device *dev;
89 struct pinctrl_dev *pctldev;
90 const struct pinctrl_pin_desc *pins;
91 unsigned int npins;
92 const struct oxnas_function *functions;
93 unsigned int nfunctions;
94 const struct oxnas_pin_group *groups;
95 unsigned int ngroups;
96 struct oxnas_gpio_bank *gpio_banks;
97 unsigned int nbanks;
98};
99
100static const struct pinctrl_pin_desc oxnas_pins[] = {
101 PINCTRL_PIN(0, "gpio0"),
102 PINCTRL_PIN(1, "gpio1"),
103 PINCTRL_PIN(2, "gpio2"),
104 PINCTRL_PIN(3, "gpio3"),
105 PINCTRL_PIN(4, "gpio4"),
106 PINCTRL_PIN(5, "gpio5"),
107 PINCTRL_PIN(6, "gpio6"),
108 PINCTRL_PIN(7, "gpio7"),
109 PINCTRL_PIN(8, "gpio8"),
110 PINCTRL_PIN(9, "gpio9"),
111 PINCTRL_PIN(10, "gpio10"),
112 PINCTRL_PIN(11, "gpio11"),
113 PINCTRL_PIN(12, "gpio12"),
114 PINCTRL_PIN(13, "gpio13"),
115 PINCTRL_PIN(14, "gpio14"),
116 PINCTRL_PIN(15, "gpio15"),
117 PINCTRL_PIN(16, "gpio16"),
118 PINCTRL_PIN(17, "gpio17"),
119 PINCTRL_PIN(18, "gpio18"),
120 PINCTRL_PIN(19, "gpio19"),
121 PINCTRL_PIN(20, "gpio20"),
122 PINCTRL_PIN(21, "gpio21"),
123 PINCTRL_PIN(22, "gpio22"),
124 PINCTRL_PIN(23, "gpio23"),
125 PINCTRL_PIN(24, "gpio24"),
126 PINCTRL_PIN(25, "gpio25"),
127 PINCTRL_PIN(26, "gpio26"),
128 PINCTRL_PIN(27, "gpio27"),
129 PINCTRL_PIN(28, "gpio28"),
130 PINCTRL_PIN(29, "gpio29"),
131 PINCTRL_PIN(30, "gpio30"),
132 PINCTRL_PIN(31, "gpio31"),
133 PINCTRL_PIN(32, "gpio32"),
134 PINCTRL_PIN(33, "gpio33"),
135 PINCTRL_PIN(34, "gpio34"),
136};
137
138static const char * const oxnas_fct0_group[] = {
139 "gpio0", "gpio1", "gpio2", "gpio3",
140 "gpio4", "gpio5", "gpio6", "gpio7",
141 "gpio8", "gpio9", "gpio10", "gpio11",
142 "gpio12", "gpio13", "gpio14", "gpio15",
143 "gpio16", "gpio17", "gpio18", "gpio19",
144 "gpio20", "gpio21", "gpio22", "gpio23",
145 "gpio24", "gpio25", "gpio26", "gpio27",
146 "gpio28", "gpio29", "gpio30", "gpio31",
147 "gpio32", "gpio33", "gpio34"
148};
149
150static const char * const oxnas_fct3_group[] = {
151 "gpio0", "gpio1", "gpio2", "gpio3",
152 "gpio4", "gpio5", "gpio6", "gpio7",
153 "gpio8", "gpio9",
154 "gpio20",
155 "gpio22", "gpio23", "gpio24", "gpio25",
156 "gpio26", "gpio27", "gpio28", "gpio29",
157 "gpio30", "gpio31", "gpio32", "gpio33",
158 "gpio34"
159};
160
161#define FUNCTION(_name, _gr) \
162 { \
163 .name = #_name, \
164 .groups = oxnas_##_gr##_group, \
165 .ngroups = ARRAY_SIZE(oxnas_##_gr##_group), \
166 }
167
168static const struct oxnas_function oxnas_functions[] = {
169 FUNCTION(gpio, fct0),
170 FUNCTION(fct3, fct3),
171};
172
173#define OXNAS_PINCTRL_GROUP(_pin, _name, ...) \
174 { \
175 .name = #_name, \
176 .pin = _pin, \
177 .bank = _pin / PINS_PER_BANK, \
178 .functions = (struct oxnas_desc_function[]){ \
179 __VA_ARGS__, { } }, \
180 }
181
182#define OXNAS_PINCTRL_FUNCTION(_name, _fct) \
183 { \
184 .name = #_name, \
185 .fct = _fct, \
186 }
187
188static const struct oxnas_pin_group oxnas_groups[] = {
189 OXNAS_PINCTRL_GROUP(0, gpio0,
190 OXNAS_PINCTRL_FUNCTION(gpio, 0),
191 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
192 OXNAS_PINCTRL_GROUP(1, gpio1,
193 OXNAS_PINCTRL_FUNCTION(gpio, 0),
194 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
195 OXNAS_PINCTRL_GROUP(2, gpio2,
196 OXNAS_PINCTRL_FUNCTION(gpio, 0),
197 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
198 OXNAS_PINCTRL_GROUP(3, gpio3,
199 OXNAS_PINCTRL_FUNCTION(gpio, 0),
200 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
201 OXNAS_PINCTRL_GROUP(4, gpio4,
202 OXNAS_PINCTRL_FUNCTION(gpio, 0),
203 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
204 OXNAS_PINCTRL_GROUP(5, gpio5,
205 OXNAS_PINCTRL_FUNCTION(gpio, 0),
206 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
207 OXNAS_PINCTRL_GROUP(6, gpio6,
208 OXNAS_PINCTRL_FUNCTION(gpio, 0),
209 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
210 OXNAS_PINCTRL_GROUP(7, gpio7,
211 OXNAS_PINCTRL_FUNCTION(gpio, 0),
212 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
213 OXNAS_PINCTRL_GROUP(8, gpio8,
214 OXNAS_PINCTRL_FUNCTION(gpio, 0),
215 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
216 OXNAS_PINCTRL_GROUP(9, gpio9,
217 OXNAS_PINCTRL_FUNCTION(gpio, 0),
218 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
219 OXNAS_PINCTRL_GROUP(10, gpio10,
220 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
221 OXNAS_PINCTRL_GROUP(11, gpio11,
222 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
223 OXNAS_PINCTRL_GROUP(12, gpio12,
224 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
225 OXNAS_PINCTRL_GROUP(13, gpio13,
226 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
227 OXNAS_PINCTRL_GROUP(14, gpio14,
228 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
229 OXNAS_PINCTRL_GROUP(15, gpio15,
230 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
231 OXNAS_PINCTRL_GROUP(16, gpio16,
232 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
233 OXNAS_PINCTRL_GROUP(17, gpio17,
234 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
235 OXNAS_PINCTRL_GROUP(18, gpio18,
236 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
237 OXNAS_PINCTRL_GROUP(19, gpio19,
238 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
239 OXNAS_PINCTRL_GROUP(20, gpio20,
240 OXNAS_PINCTRL_FUNCTION(gpio, 0),
241 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
242 OXNAS_PINCTRL_GROUP(21, gpio21,
243 OXNAS_PINCTRL_FUNCTION(gpio, 0)),
244 OXNAS_PINCTRL_GROUP(22, gpio22,
245 OXNAS_PINCTRL_FUNCTION(gpio, 0),
246 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
247 OXNAS_PINCTRL_GROUP(23, gpio23,
248 OXNAS_PINCTRL_FUNCTION(gpio, 0),
249 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
250 OXNAS_PINCTRL_GROUP(24, gpio24,
251 OXNAS_PINCTRL_FUNCTION(gpio, 0),
252 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
253 OXNAS_PINCTRL_GROUP(25, gpio25,
254 OXNAS_PINCTRL_FUNCTION(gpio, 0),
255 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
256 OXNAS_PINCTRL_GROUP(26, gpio26,
257 OXNAS_PINCTRL_FUNCTION(gpio, 0),
258 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
259 OXNAS_PINCTRL_GROUP(27, gpio27,
260 OXNAS_PINCTRL_FUNCTION(gpio, 0),
261 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
262 OXNAS_PINCTRL_GROUP(28, gpio28,
263 OXNAS_PINCTRL_FUNCTION(gpio, 0),
264 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
265 OXNAS_PINCTRL_GROUP(29, gpio29,
266 OXNAS_PINCTRL_FUNCTION(gpio, 0),
267 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
268 OXNAS_PINCTRL_GROUP(30, gpio30,
269 OXNAS_PINCTRL_FUNCTION(gpio, 0),
270 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
271 OXNAS_PINCTRL_GROUP(31, gpio31,
272 OXNAS_PINCTRL_FUNCTION(gpio, 0),
273 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
274 OXNAS_PINCTRL_GROUP(32, gpio32,
275 OXNAS_PINCTRL_FUNCTION(gpio, 0),
276 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
277 OXNAS_PINCTRL_GROUP(33, gpio33,
278 OXNAS_PINCTRL_FUNCTION(gpio, 0),
279 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
280 OXNAS_PINCTRL_GROUP(34, gpio34,
281 OXNAS_PINCTRL_FUNCTION(gpio, 0),
282 OXNAS_PINCTRL_FUNCTION(fct3, 3)),
283};
284
285static inline struct oxnas_gpio_bank *pctl_to_bank(struct oxnas_pinctrl *pctl,
286 unsigned int pin)
287{
288 return &pctl->gpio_banks[pin / PINS_PER_BANK];
289}
290
291static int oxnas_pinctrl_get_groups_count(struct pinctrl_dev *pctldev)
292{
293 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
294
295 return pctl->ngroups;
296}
297
298static const char *oxnas_pinctrl_get_group_name(struct pinctrl_dev *pctldev,
299 unsigned int group)
300{
301 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
302
303 return pctl->groups[group].name;
304}
305
306static int oxnas_pinctrl_get_group_pins(struct pinctrl_dev *pctldev,
307 unsigned int group,
308 const unsigned int **pins,
309 unsigned int *num_pins)
310{
311 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
312
313 *pins = &pctl->groups[group].pin;
314 *num_pins = 1;
315
316 return 0;
317}
318
319static const struct pinctrl_ops oxnas_pinctrl_ops = {
320 .get_groups_count = oxnas_pinctrl_get_groups_count,
321 .get_group_name = oxnas_pinctrl_get_group_name,
322 .get_group_pins = oxnas_pinctrl_get_group_pins,
323 .dt_node_to_map = pinconf_generic_dt_node_to_map_pin,
324 .dt_free_map = pinctrl_utils_free_map,
325};
326
327static int oxnas_pinmux_get_functions_count(struct pinctrl_dev *pctldev)
328{
329 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
330
331 return pctl->nfunctions;
332}
333
334static const char *
335oxnas_pinmux_get_function_name(struct pinctrl_dev *pctldev, unsigned int func)
336{
337 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
338
339 return pctl->functions[func].name;
340}
341
342static int oxnas_pinmux_get_function_groups(struct pinctrl_dev *pctldev,
343 unsigned int func,
344 const char * const **groups,
345 unsigned int * const num_groups)
346{
347 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
348
349 *groups = pctl->functions[func].groups;
350 *num_groups = pctl->functions[func].ngroups;
351
352 return 0;
353}
354
355static int oxnas_pinmux_enable(struct pinctrl_dev *pctldev,
356 unsigned int func, unsigned int group)
357{
358 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
359 const struct oxnas_pin_group *pg = &pctl->groups[group];
360 const struct oxnas_function *pf = &pctl->functions[func];
361 const char *fname = pf->name;
362 struct oxnas_desc_function *functions = pg->functions;
363 u32 mask = BIT(pg->pin);
364
365 while (functions->name) {
366 if (!strcmp(functions->name, fname)) {
367 dev_dbg(pctl->dev,
368 "setting function %s bank %d pin %d fct %d mask %x\n",
369 fname, pg->bank, pg->pin,
370 functions->fct, mask);
371
372 regmap_write_bits(pctl->regmap,
373 (pg->bank ?
374 PINMUX_PRIMARY_SEL1 :
375 PINMUX_PRIMARY_SEL0),
376 mask,
377 (functions->fct == 1 ?
378 mask : 0));
379 regmap_write_bits(pctl->regmap,
380 (pg->bank ?
381 PINMUX_SECONDARY_SEL1 :
382 PINMUX_SECONDARY_SEL0),
383 mask,
384 (functions->fct == 2 ?
385 mask : 0));
386 regmap_write_bits(pctl->regmap,
387 (pg->bank ?
388 PINMUX_TERTIARY_SEL1 :
389 PINMUX_TERTIARY_SEL0),
390 mask,
391 (functions->fct == 3 ?
392 mask : 0));
393
394 return 0;
395 }
396
397 functions++;
398 }
399
400 dev_err(pctl->dev, "cannot mux pin %u to function %u\n", group, func);
401
402 return -EINVAL;
403}
404
405static int oxnas_gpio_request_enable(struct pinctrl_dev *pctldev,
406 struct pinctrl_gpio_range *range,
407 unsigned int offset)
408{
409 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
410 struct oxnas_gpio_bank *bank = gpiochip_get_data(range->gc);
411 u32 mask = BIT(offset - bank->gpio_chip.base);
412
413 dev_dbg(pctl->dev, "requesting gpio %d in bank %d (id %d) with mask 0x%x\n",
414 offset, bank->gpio_chip.base, bank->id, mask);
415
416 regmap_write_bits(pctl->regmap,
417 (bank->id ?
418 PINMUX_PRIMARY_SEL1 :
419 PINMUX_PRIMARY_SEL0),
420 mask, 0);
421 regmap_write_bits(pctl->regmap,
422 (bank->id ?
423 PINMUX_SECONDARY_SEL1 :
424 PINMUX_SECONDARY_SEL0),
425 mask, 0);
426 regmap_write_bits(pctl->regmap,
427 (bank->id ?
428 PINMUX_TERTIARY_SEL1 :
429 PINMUX_TERTIARY_SEL0),
430 mask, 0);
431
432 return 0;
433}
434
435static int oxnas_gpio_get_direction(struct gpio_chip *chip,
436 unsigned int offset)
437{
438 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
439 u32 mask = BIT(offset);
440
441 return !(readl_relaxed(bank->reg_base + OUTPUT_EN) & mask);
442}
443
444static int oxnas_gpio_direction_input(struct gpio_chip *chip,
445 unsigned int offset)
446{
447 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
448 u32 mask = BIT(offset);
449
450 writel_relaxed(mask, bank->reg_base + OUTPUT_EN_CLEAR);
451
452 return 0;
453}
454
455static int oxnas_gpio_get(struct gpio_chip *chip, unsigned int offset)
456{
457 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
458 u32 mask = BIT(offset);
459
460 return (readl_relaxed(bank->reg_base + INPUT_VALUE) & mask) != 0;
461}
462
463static void oxnas_gpio_set(struct gpio_chip *chip, unsigned int offset,
464 int value)
465{
466 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
467 u32 mask = BIT(offset);
468
469 if (value)
470 writel_relaxed(mask, bank->reg_base + OUTPUT_SET);
471 else
472 writel_relaxed(mask, bank->reg_base + OUTPUT_CLEAR);
473}
474
475static int oxnas_gpio_direction_output(struct gpio_chip *chip,
476 unsigned int offset, int value)
477{
478 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
479 u32 mask = BIT(offset);
480
481 oxnas_gpio_set(chip, offset, value);
482 writel_relaxed(mask, bank->reg_base + OUTPUT_EN_SET);
483
484 return 0;
485}
486
487static int oxnas_gpio_set_direction(struct pinctrl_dev *pctldev,
488 struct pinctrl_gpio_range *range,
489 unsigned int offset, bool input)
490{
491 struct gpio_chip *chip = range->gc;
492
493 if (input)
494 oxnas_gpio_direction_input(chip, offset);
495 else
496 oxnas_gpio_direction_output(chip, offset, 0);
497
498 return 0;
499}
500
501static const struct pinmux_ops oxnas_pinmux_ops = {
502 .get_functions_count = oxnas_pinmux_get_functions_count,
503 .get_function_name = oxnas_pinmux_get_function_name,
504 .get_function_groups = oxnas_pinmux_get_function_groups,
505 .set_mux = oxnas_pinmux_enable,
506 .gpio_request_enable = oxnas_gpio_request_enable,
507 .gpio_set_direction = oxnas_gpio_set_direction,
508};
509
510static int oxnas_pinconf_get(struct pinctrl_dev *pctldev, unsigned int pin,
511 unsigned long *config)
512{
513 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
514 struct oxnas_gpio_bank *bank = pctl_to_bank(pctl, pin);
515 unsigned int param = pinconf_to_config_param(*config);
516 u32 mask = BIT(pin - bank->gpio_chip.base);
517 int ret;
518 u32 arg;
519
520 switch (param) {
521 case PIN_CONFIG_BIAS_PULL_UP:
522 ret = regmap_read(pctl->regmap,
523 (bank->id ?
524 PINMUX_PULLUP_CTRL1 :
525 PINMUX_PULLUP_CTRL0),
526 &arg);
527 if (ret)
528 return ret;
529
530 arg = !!(arg & mask);
531 break;
532 default:
533 return -ENOTSUPP;
534 }
535
536 *config = pinconf_to_config_packed(param, arg);
537
538 return 0;
539}
540
541static int oxnas_pinconf_set(struct pinctrl_dev *pctldev, unsigned int pin,
542 unsigned long *configs, unsigned int num_configs)
543{
544 struct oxnas_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
545 struct oxnas_gpio_bank *bank = pctl_to_bank(pctl, pin);
546 unsigned int param;
547 u32 arg;
548 unsigned int i;
549 u32 offset = pin - bank->gpio_chip.base;
550 u32 mask = BIT(offset);
551
552 dev_dbg(pctl->dev, "setting pin %d bank %d mask 0x%x\n",
553 pin, bank->gpio_chip.base, mask);
554
555 for (i = 0; i < num_configs; i++) {
556 param = pinconf_to_config_param(configs[i]);
557 arg = pinconf_to_config_argument(configs[i]);
558
559 switch (param) {
560 case PIN_CONFIG_BIAS_PULL_UP:
561 dev_dbg(pctl->dev, " pullup\n");
562 regmap_write_bits(pctl->regmap,
563 (bank->id ?
564 PINMUX_PULLUP_CTRL1 :
565 PINMUX_PULLUP_CTRL0),
566 mask, mask);
567 break;
568 default:
569 dev_err(pctl->dev, "Property %u not supported\n",
570 param);
571 return -ENOTSUPP;
572 }
573 }
574
575 return 0;
576}
577
578static const struct pinconf_ops oxnas_pinconf_ops = {
579 .pin_config_get = oxnas_pinconf_get,
580 .pin_config_set = oxnas_pinconf_set,
581 .is_generic = true,
582};
583
584static struct pinctrl_desc oxnas_pinctrl_desc = {
585 .name = "oxnas-pinctrl",
586 .pctlops = &oxnas_pinctrl_ops,
587 .pmxops = &oxnas_pinmux_ops,
588 .confops = &oxnas_pinconf_ops,
589 .owner = THIS_MODULE,
590};
591
592static void oxnas_gpio_irq_ack(struct irq_data *data)
593{
594 struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
595 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
596 u32 mask = BIT(data->hwirq);
597
598 writel(mask, bank->reg_base + IRQ_PENDING);
599}
600
601static void oxnas_gpio_irq_mask(struct irq_data *data)
602{
603 struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
604 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
605 unsigned int type = irqd_get_trigger_type(data);
606 u32 mask = BIT(data->hwirq);
607
608 if (type & IRQ_TYPE_EDGE_RISING)
609 writel(readl(bank->reg_base + RE_IRQ_ENABLE) & ~mask,
610 bank->reg_base + RE_IRQ_ENABLE);
611
612 if (type & IRQ_TYPE_EDGE_FALLING)
613 writel(readl(bank->reg_base + FE_IRQ_ENABLE) & ~mask,
614 bank->reg_base + FE_IRQ_ENABLE);
615}
616
617static void oxnas_gpio_irq_unmask(struct irq_data *data)
618{
619 struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
620 struct oxnas_gpio_bank *bank = gpiochip_get_data(chip);
621 unsigned int type = irqd_get_trigger_type(data);
622 u32 mask = BIT(data->hwirq);
623
624 if (type & IRQ_TYPE_EDGE_RISING)
625 writel(readl(bank->reg_base + RE_IRQ_ENABLE) | mask,
626 bank->reg_base + RE_IRQ_ENABLE);
627
628 if (type & IRQ_TYPE_EDGE_FALLING)
629 writel(readl(bank->reg_base + FE_IRQ_ENABLE) | mask,
630 bank->reg_base + FE_IRQ_ENABLE);
631}
632
633static unsigned int oxnas_gpio_irq_startup(struct irq_data *data)
634{
635 struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
636
637 oxnas_gpio_direction_input(chip, data->hwirq);
638 oxnas_gpio_irq_unmask(data);
639
640 return 0;
641}
642
643static int oxnas_gpio_irq_set_type(struct irq_data *data, unsigned int type)
644{
645 if ((type & (IRQ_TYPE_EDGE_RISING|IRQ_TYPE_EDGE_FALLING)) == 0)
646 return -EINVAL;
647
648 irq_set_handler_locked(data, handle_edge_irq);
649
650 return 0;
651}
652
653static void oxnas_gpio_irq_handler(struct irq_desc *desc)
654{
655 struct gpio_chip *gc = irq_desc_get_handler_data(desc);
656 struct oxnas_gpio_bank *bank = gpiochip_get_data(gc);
657 struct irq_chip *chip = irq_desc_get_chip(desc);
658 unsigned long stat;
659 unsigned int pin;
660
661 chained_irq_enter(chip, desc);
662
663 stat = readl(bank->reg_base + IRQ_PENDING);
664
665 for_each_set_bit(pin, &stat, BITS_PER_LONG)
666 generic_handle_irq(irq_linear_revmap(gc->irqdomain, pin));
667
668 chained_irq_exit(chip, desc);
669}
670
671#define GPIO_BANK(_bank) \
672 { \
673 .gpio_chip = { \
674 .label = "GPIO" #_bank, \
675 .request = gpiochip_generic_request, \
676 .free = gpiochip_generic_free, \
677 .get_direction = oxnas_gpio_get_direction, \
678 .direction_input = oxnas_gpio_direction_input, \
679 .direction_output = oxnas_gpio_direction_output, \
680 .get = oxnas_gpio_get, \
681 .set = oxnas_gpio_set, \
682 .ngpio = PINS_PER_BANK, \
683 .base = GPIO_BANK_START(_bank), \
684 .owner = THIS_MODULE, \
685 .can_sleep = 0, \
686 }, \
687 .irq_chip = { \
688 .name = "GPIO" #_bank, \
689 .irq_startup = oxnas_gpio_irq_startup, \
690 .irq_ack = oxnas_gpio_irq_ack, \
691 .irq_mask = oxnas_gpio_irq_mask, \
692 .irq_unmask = oxnas_gpio_irq_unmask, \
693 .irq_set_type = oxnas_gpio_irq_set_type, \
694 }, \
695 }
696
697static struct oxnas_gpio_bank oxnas_gpio_banks[] = {
698 GPIO_BANK(0),
699 GPIO_BANK(1),
700};
701
702static int oxnas_pinctrl_probe(struct platform_device *pdev)
703{
704 struct oxnas_pinctrl *pctl;
705
706 pctl = devm_kzalloc(&pdev->dev, sizeof(*pctl), GFP_KERNEL);
707 if (!pctl)
708 return -ENOMEM;
709 pctl->dev = &pdev->dev;
710 dev_set_drvdata(&pdev->dev, pctl);
711
712 pctl->regmap = syscon_regmap_lookup_by_phandle(pdev->dev.of_node,
713 "oxsemi,sys-ctrl");
714 if (IS_ERR(pctl->regmap)) {
715 dev_err(&pdev->dev, "failed to get sys ctrl regmap\n");
716 return -ENODEV;
717 }
718
719 pctl->pins = oxnas_pins;
720 pctl->npins = ARRAY_SIZE(oxnas_pins);
721 pctl->functions = oxnas_functions;
722 pctl->nfunctions = ARRAY_SIZE(oxnas_functions);
723 pctl->groups = oxnas_groups;
724 pctl->ngroups = ARRAY_SIZE(oxnas_groups);
725 pctl->gpio_banks = oxnas_gpio_banks;
726 pctl->nbanks = ARRAY_SIZE(oxnas_gpio_banks);
727
728 oxnas_pinctrl_desc.pins = pctl->pins;
729 oxnas_pinctrl_desc.npins = pctl->npins;
730
731 pctl->pctldev = pinctrl_register(&oxnas_pinctrl_desc,
732 &pdev->dev, pctl);
733 if (IS_ERR(pctl->pctldev)) {
734 dev_err(&pdev->dev, "Failed to register pinctrl device\n");
735 return PTR_ERR(pctl->pctldev);
736 }
737
738 return 0;
739}
740
741static int oxnas_gpio_probe(struct platform_device *pdev)
742{
743 struct device_node *np = pdev->dev.of_node;
744 struct of_phandle_args pinspec;
745 struct oxnas_gpio_bank *bank;
746 unsigned int id, ngpios;
747 int irq, ret;
748 struct resource *res;
749
750 if (of_parse_phandle_with_fixed_args(np, "gpio-ranges",
751 3, 0, &pinspec)) {
752 dev_err(&pdev->dev, "gpio-ranges property not found\n");
753 return -EINVAL;
754 }
755
756 id = pinspec.args[1] / PINS_PER_BANK;
757 ngpios = pinspec.args[2];
758
759 if (id >= ARRAY_SIZE(oxnas_gpio_banks)) {
760 dev_err(&pdev->dev, "invalid gpio-ranges base arg\n");
761 return -EINVAL;
762 }
763
764 if (ngpios > PINS_PER_BANK) {
765 dev_err(&pdev->dev, "invalid gpio-ranges count arg\n");
766 return -EINVAL;
767 }
768
769 bank = &oxnas_gpio_banks[id];
770
771 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
772 bank->reg_base = devm_ioremap_resource(&pdev->dev, res);
773 if (IS_ERR(bank->reg_base))
774 return PTR_ERR(bank->reg_base);
775
776 irq = platform_get_irq(pdev, 0);
777 if (irq < 0) {
778 dev_err(&pdev->dev, "irq get failed\n");
779 return irq;
780 }
781
782 bank->id = id;
783 bank->gpio_chip.parent = &pdev->dev;
784 bank->gpio_chip.of_node = np;
785 bank->gpio_chip.ngpio = ngpios;
786 ret = gpiochip_add_data(&bank->gpio_chip, bank);
787 if (ret < 0) {
788 dev_err(&pdev->dev, "Failed to add GPIO chip %u: %d\n",
789 id, ret);
790 return ret;
791 }
792
793 ret = gpiochip_irqchip_add(&bank->gpio_chip, &bank->irq_chip,
794 0, handle_level_irq, IRQ_TYPE_NONE);
795 if (ret < 0) {
796 dev_err(&pdev->dev, "Failed to add IRQ chip %u: %d\n",
797 id, ret);
798 gpiochip_remove(&bank->gpio_chip);
799 return ret;
800 }
801
802 gpiochip_set_chained_irqchip(&bank->gpio_chip, &bank->irq_chip,
803 irq, oxnas_gpio_irq_handler);
804
805 return 0;
806}
807
808static const struct of_device_id oxnas_pinctrl_of_match[] = {
809 { .compatible = "oxsemi,ox810se-pinctrl", },
810 { },
811};
812
813static struct platform_driver oxnas_pinctrl_driver = {
814 .driver = {
815 .name = "oxnas-pinctrl",
816 .of_match_table = oxnas_pinctrl_of_match,
817 .suppress_bind_attrs = true,
818 },
819 .probe = oxnas_pinctrl_probe,
820};
821
822static const struct of_device_id oxnas_gpio_of_match[] = {
823 { .compatible = "oxsemi,ox810se-gpio", },
824 { },
825};
826
827static struct platform_driver oxnas_gpio_driver = {
828 .driver = {
829 .name = "oxnas-gpio",
830 .of_match_table = oxnas_gpio_of_match,
831 .suppress_bind_attrs = true,
832 },
833 .probe = oxnas_gpio_probe,
834};
835
836static int __init oxnas_gpio_register(void)
837{
838 return platform_driver_register(&oxnas_gpio_driver);
839}
840arch_initcall(oxnas_gpio_register);
841
842static int __init oxnas_pinctrl_register(void)
843{
844 return platform_driver_register(&oxnas_pinctrl_driver);
845}
846arch_initcall(oxnas_pinctrl_register);
diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index a91026e8cd7c..44902c63f507 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -360,7 +360,7 @@ static struct regmap_config rockchip_regmap_config = {
360 .reg_stride = 4, 360 .reg_stride = 4,
361}; 361};
362 362
363static const inline struct rockchip_pin_group *pinctrl_name_to_group( 363static inline const struct rockchip_pin_group *pinctrl_name_to_group(
364 const struct rockchip_pinctrl *info, 364 const struct rockchip_pinctrl *info,
365 const char *name) 365 const char *name)
366{ 366{
@@ -2007,7 +2007,7 @@ static void rockchip_irq_gc_mask_clr_bit(struct irq_data *d)
2007 irq_gc_mask_clr_bit(d); 2007 irq_gc_mask_clr_bit(d);
2008} 2008}
2009 2009
2010void rockchip_irq_gc_mask_set_bit(struct irq_data *d) 2010static void rockchip_irq_gc_mask_set_bit(struct irq_data *d)
2011{ 2011{
2012 struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); 2012 struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d);
2013 struct rockchip_pin_bank *bank = gc->private; 2013 struct rockchip_pin_bank *bank = gc->private;
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index d0ba968af5bb..0de1c67dfb94 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -844,7 +844,7 @@ static int st_pctl_get_group_pins(struct pinctrl_dev *pctldev,
844 return 0; 844 return 0;
845} 845}
846 846
847static const inline struct st_pctl_group *st_pctl_find_group_by_name( 847static inline const struct st_pctl_group *st_pctl_find_group_by_name(
848 const struct st_pinctrl *info, const char *name) 848 const struct st_pinctrl *info, const char *name)
849{ 849{
850 int i; 850 int i;
diff --git a/drivers/pinctrl/pinctrl-u300.c b/drivers/pinctrl/pinctrl-u300.c
index d1af908a7060..9cc80a500880 100644
--- a/drivers/pinctrl/pinctrl-u300.c
+++ b/drivers/pinctrl/pinctrl-u300.c
@@ -670,7 +670,7 @@ struct u300_pmx {
670 * u300_pmx_registers - the array of registers read/written for each pinmux 670 * u300_pmx_registers - the array of registers read/written for each pinmux
671 * shunt setting 671 * shunt setting
672 */ 672 */
673const u32 u300_pmx_registers[] = { 673static const u32 u300_pmx_registers[] = {
674 U300_SYSCON_PMC1LR, 674 U300_SYSCON_PMC1LR,
675 U300_SYSCON_PMC1HR, 675 U300_SYSCON_PMC1HR,
676 U300_SYSCON_PMC2R, 676 U300_SYSCON_PMC2R,
diff --git a/drivers/pinctrl/pinctrl-xway.c b/drivers/pinctrl/pinctrl-xway.c
index b9375544dff0..dd85ad1807f5 100644
--- a/drivers/pinctrl/pinctrl-xway.c
+++ b/drivers/pinctrl/pinctrl-xway.c
@@ -1616,50 +1616,74 @@ struct pinctrl_xway_soc {
1616 1616
1617/* xway xr9 series (DEPRECATED: Use XWAY xRX100/xRX200 Family) */ 1617/* xway xr9 series (DEPRECATED: Use XWAY xRX100/xRX200 Family) */
1618static struct pinctrl_xway_soc xr9_pinctrl = { 1618static struct pinctrl_xway_soc xr9_pinctrl = {
1619 XR9_MAX_PIN, xway_mfp, 1619 .pin_count = XR9_MAX_PIN,
1620 xway_grps, ARRAY_SIZE(xway_grps), 1620 .mfp = xway_mfp,
1621 xrx_funcs, ARRAY_SIZE(xrx_funcs), 1621 .grps = xway_grps,
1622 xway_exin_pin_map, 6 1622 .num_grps = ARRAY_SIZE(xway_grps),
1623 .funcs = xrx_funcs,
1624 .num_funcs = ARRAY_SIZE(xrx_funcs),
1625 .exin = xway_exin_pin_map,
1626 .num_exin = 6
1623}; 1627};
1624 1628
1625/* XWAY AMAZON Family */ 1629/* XWAY AMAZON Family */
1626static struct pinctrl_xway_soc ase_pinctrl = { 1630static struct pinctrl_xway_soc ase_pinctrl = {
1627 ASE_MAX_PIN, ase_mfp, 1631 .pin_count = ASE_MAX_PIN,
1628 ase_grps, ARRAY_SIZE(ase_grps), 1632 .mfp = ase_mfp,
1629 ase_funcs, ARRAY_SIZE(ase_funcs), 1633 .grps = ase_grps,
1630 ase_exin_pin_map, 3 1634 .num_grps = ARRAY_SIZE(ase_grps),
1635 .funcs = ase_funcs,
1636 .num_funcs = ARRAY_SIZE(ase_funcs),
1637 .exin = ase_exin_pin_map,
1638 .num_exin = 3
1631}; 1639};
1632 1640
1633/* XWAY DANUBE Family */ 1641/* XWAY DANUBE Family */
1634static struct pinctrl_xway_soc danube_pinctrl = { 1642static struct pinctrl_xway_soc danube_pinctrl = {
1635 DANUBE_MAX_PIN, danube_mfp, 1643 .pin_count = DANUBE_MAX_PIN,
1636 danube_grps, ARRAY_SIZE(danube_grps), 1644 .mfp = danube_mfp,
1637 danube_funcs, ARRAY_SIZE(danube_funcs), 1645 .grps = danube_grps,
1638 danube_exin_pin_map, 3 1646 .num_grps = ARRAY_SIZE(danube_grps),
1647 .funcs = danube_funcs,
1648 .num_funcs = ARRAY_SIZE(danube_funcs),
1649 .exin = danube_exin_pin_map,
1650 .num_exin = 3
1639}; 1651};
1640 1652
1641/* XWAY xRX100 Family */ 1653/* XWAY xRX100 Family */
1642static struct pinctrl_xway_soc xrx100_pinctrl = { 1654static struct pinctrl_xway_soc xrx100_pinctrl = {
1643 XRX100_MAX_PIN, xrx100_mfp, 1655 .pin_count = XRX100_MAX_PIN,
1644 xrx100_grps, ARRAY_SIZE(xrx100_grps), 1656 .mfp = xrx100_mfp,
1645 xrx100_funcs, ARRAY_SIZE(xrx100_funcs), 1657 .grps = xrx100_grps,
1646 xrx100_exin_pin_map, 6 1658 .num_grps = ARRAY_SIZE(xrx100_grps),
1659 .funcs = xrx100_funcs,
1660 .num_funcs = ARRAY_SIZE(xrx100_funcs),
1661 .exin = xrx100_exin_pin_map,
1662 .num_exin = 6
1647}; 1663};
1648 1664
1649/* XWAY xRX200 Family */ 1665/* XWAY xRX200 Family */
1650static struct pinctrl_xway_soc xrx200_pinctrl = { 1666static struct pinctrl_xway_soc xrx200_pinctrl = {
1651 XRX200_MAX_PIN, xrx200_mfp, 1667 .pin_count = XRX200_MAX_PIN,
1652 xrx200_grps, ARRAY_SIZE(xrx200_grps), 1668 .mfp = xrx200_mfp,
1653 xrx200_funcs, ARRAY_SIZE(xrx200_funcs), 1669 .grps = xrx200_grps,
1654 xrx200_exin_pin_map, 6 1670 .num_grps = ARRAY_SIZE(xrx200_grps),
1671 .funcs = xrx200_funcs,
1672 .num_funcs = ARRAY_SIZE(xrx200_funcs),
1673 .exin = xrx200_exin_pin_map,
1674 .num_exin = 6
1655}; 1675};
1656 1676
1657/* XWAY xRX300 Family */ 1677/* XWAY xRX300 Family */
1658static struct pinctrl_xway_soc xrx300_pinctrl = { 1678static struct pinctrl_xway_soc xrx300_pinctrl = {
1659 XRX300_MAX_PIN, xrx300_mfp, 1679 .pin_count = XRX300_MAX_PIN,
1660 xrx300_grps, ARRAY_SIZE(xrx300_grps), 1680 .mfp = xrx300_mfp,
1661 xrx300_funcs, ARRAY_SIZE(xrx300_funcs), 1681 .grps = xrx300_grps,
1662 xrx300_exin_pin_map, 5 1682 .num_grps = ARRAY_SIZE(xrx300_grps),
1683 .funcs = xrx300_funcs,
1684 .num_funcs = ARRAY_SIZE(xrx300_funcs),
1685 .exin = xrx300_exin_pin_map,
1686 .num_exin = 5
1663}; 1687};
1664 1688
1665static struct pinctrl_gpio_range xway_gpio_range = { 1689static struct pinctrl_gpio_range xway_gpio_range = {
diff --git a/drivers/pinctrl/pinctrl-zynq.c b/drivers/pinctrl/pinctrl-zynq.c
index 8fdc60c5aeaf..7afdbede6823 100644
--- a/drivers/pinctrl/pinctrl-zynq.c
+++ b/drivers/pinctrl/pinctrl-zynq.c
@@ -20,7 +20,7 @@
20 */ 20 */
21#include <linux/io.h> 21#include <linux/io.h>
22#include <linux/mfd/syscon.h> 22#include <linux/mfd/syscon.h>
23#include <linux/module.h> 23#include <linux/init.h>
24#include <linux/of.h> 24#include <linux/of.h>
25#include <linux/platform_device.h> 25#include <linux/platform_device.h>
26#include <linux/pinctrl/pinctrl.h> 26#include <linux/pinctrl/pinctrl.h>
@@ -1210,7 +1210,6 @@ static const struct of_device_id zynq_pinctrl_of_match[] = {
1210 { .compatible = "xlnx,pinctrl-zynq" }, 1210 { .compatible = "xlnx,pinctrl-zynq" },
1211 { } 1211 { }
1212}; 1212};
1213MODULE_DEVICE_TABLE(of, zynq_pinctrl_of_match);
1214 1213
1215static struct platform_driver zynq_pinctrl_driver = { 1214static struct platform_driver zynq_pinctrl_driver = {
1216 .driver = { 1215 .driver = {
@@ -1225,13 +1224,3 @@ static int __init zynq_pinctrl_init(void)
1225 return platform_driver_register(&zynq_pinctrl_driver); 1224 return platform_driver_register(&zynq_pinctrl_driver);
1226} 1225}
1227arch_initcall(zynq_pinctrl_init); 1226arch_initcall(zynq_pinctrl_init);
1228
1229static void __exit zynq_pinctrl_exit(void)
1230{
1231 platform_driver_unregister(&zynq_pinctrl_driver);
1232}
1233module_exit(zynq_pinctrl_exit);
1234
1235MODULE_AUTHOR("Sören Brinkmann <soren.brinkmann@xilinx.com>");
1236MODULE_DESCRIPTION("Xilinx Zynq pinctrl driver");
1237MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c
index c223a9ef1fe1..ece702881946 100644
--- a/drivers/pinctrl/pinmux.c
+++ b/drivers/pinctrl/pinmux.c
@@ -256,7 +256,7 @@ int pinmux_request_gpio(struct pinctrl_dev *pctldev,
256 /* Conjure some name stating what chip and pin this is taken by */ 256 /* Conjure some name stating what chip and pin this is taken by */
257 owner = kasprintf(GFP_KERNEL, "%s:%d", range->name, gpio); 257 owner = kasprintf(GFP_KERNEL, "%s:%d", range->name, gpio);
258 if (!owner) 258 if (!owner)
259 return -EINVAL; 259 return -ENOMEM;
260 260
261 ret = pin_request(pctldev, pin, owner, range); 261 ret = pin_request(pctldev, pin, owner, range);
262 if (ret < 0) 262 if (ret < 0)
@@ -606,23 +606,17 @@ static int pinmux_pins_show(struct seq_file *s, void *what)
606 if (pmxops->strict) { 606 if (pmxops->strict) {
607 if (desc->mux_owner) 607 if (desc->mux_owner)
608 seq_printf(s, "pin %d (%s): device %s%s", 608 seq_printf(s, "pin %d (%s): device %s%s",
609 pin, 609 pin, desc->name, desc->mux_owner,
610 desc->name ? desc->name : "unnamed",
611 desc->mux_owner,
612 is_hog ? " (HOG)" : ""); 610 is_hog ? " (HOG)" : "");
613 else if (desc->gpio_owner) 611 else if (desc->gpio_owner)
614 seq_printf(s, "pin %d (%s): GPIO %s", 612 seq_printf(s, "pin %d (%s): GPIO %s",
615 pin, 613 pin, desc->name, desc->gpio_owner);
616 desc->name ? desc->name : "unnamed",
617 desc->gpio_owner);
618 else 614 else
619 seq_printf(s, "pin %d (%s): UNCLAIMED", 615 seq_printf(s, "pin %d (%s): UNCLAIMED",
620 pin, 616 pin, desc->name);
621 desc->name ? desc->name : "unnamed");
622 } else { 617 } else {
623 /* For non-strict controllers */ 618 /* For non-strict controllers */
624 seq_printf(s, "pin %d (%s): %s %s%s", pin, 619 seq_printf(s, "pin %d (%s): %s %s%s", pin, desc->name,
625 desc->name ? desc->name : "unnamed",
626 desc->mux_owner ? desc->mux_owner 620 desc->mux_owner ? desc->mux_owner
627 : "(MUX UNCLAIMED)", 621 : "(MUX UNCLAIMED)",
628 desc->gpio_owner ? desc->gpio_owner 622 desc->gpio_owner ? desc->gpio_owner
diff --git a/drivers/pinctrl/qcom/Kconfig b/drivers/pinctrl/qcom/Kconfig
index 67bc70dcda64..93ef268d5ccd 100644
--- a/drivers/pinctrl/qcom/Kconfig
+++ b/drivers/pinctrl/qcom/Kconfig
@@ -55,6 +55,14 @@ config PINCTRL_MSM8960
55 This is the pinctrl, pinmux, pinconf and gpiolib driver for the 55 This is the pinctrl, pinmux, pinconf and gpiolib driver for the
56 Qualcomm TLMM block found in the Qualcomm 8960 platform. 56 Qualcomm TLMM block found in the Qualcomm 8960 platform.
57 57
58config PINCTRL_MDM9615
59 tristate "Qualcomm 9615 pin controller driver"
60 depends on GPIOLIB && OF
61 select PINCTRL_MSM
62 help
63 This is the pinctrl, pinmux, pinconf and gpiolib driver for the
64 Qualcomm TLMM block found in the Qualcomm 9615 platform.
65
58config PINCTRL_MSM8X74 66config PINCTRL_MSM8X74
59 tristate "Qualcomm 8x74 pin controller driver" 67 tristate "Qualcomm 8x74 pin controller driver"
60 depends on GPIOLIB && OF 68 depends on GPIOLIB && OF
diff --git a/drivers/pinctrl/qcom/Makefile b/drivers/pinctrl/qcom/Makefile
index c964a2c4b90a..8319e11cecb5 100644
--- a/drivers/pinctrl/qcom/Makefile
+++ b/drivers/pinctrl/qcom/Makefile
@@ -10,6 +10,7 @@ obj-$(CONFIG_PINCTRL_MSM8X74) += pinctrl-msm8x74.o
10obj-$(CONFIG_PINCTRL_MSM8916) += pinctrl-msm8916.o 10obj-$(CONFIG_PINCTRL_MSM8916) += pinctrl-msm8916.o
11obj-$(CONFIG_PINCTRL_MSM8996) += pinctrl-msm8996.o 11obj-$(CONFIG_PINCTRL_MSM8996) += pinctrl-msm8996.o
12obj-$(CONFIG_PINCTRL_QDF2XXX) += pinctrl-qdf2xxx.o 12obj-$(CONFIG_PINCTRL_QDF2XXX) += pinctrl-qdf2xxx.o
13obj-$(CONFIG_PINCTRL_MDM9615) += pinctrl-mdm9615.o
13obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-gpio.o 14obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-gpio.o
14obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-mpp.o 15obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-mpp.o
15obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-gpio.o 16obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-gpio.o
diff --git a/drivers/pinctrl/qcom/pinctrl-mdm9615.c b/drivers/pinctrl/qcom/pinctrl-mdm9615.c
new file mode 100644
index 000000000000..2b8f4521692c
--- /dev/null
+++ b/drivers/pinctrl/qcom/pinctrl-mdm9615.c
@@ -0,0 +1,483 @@
1/*
2 * Copyright (c) 2014, Sony Mobile Communications AB.
3 * Copyright (c) 2016 BayLibre, SAS.
4 * Author : Neil Armstrong <narmstrong@baylibre.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 and
8 * only version 2 as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#include <linux/module.h>
17#include <linux/of.h>
18#include <linux/platform_device.h>
19#include <linux/pinctrl/pinctrl.h>
20#include <linux/pinctrl/pinmux.h>
21
22#include "pinctrl-msm.h"
23
24static const struct pinctrl_pin_desc mdm9615_pins[] = {
25 PINCTRL_PIN(0, "GPIO_0"),
26 PINCTRL_PIN(1, "GPIO_1"),
27 PINCTRL_PIN(2, "GPIO_2"),
28 PINCTRL_PIN(3, "GPIO_3"),
29 PINCTRL_PIN(4, "GPIO_4"),
30 PINCTRL_PIN(5, "GPIO_5"),
31 PINCTRL_PIN(6, "GPIO_6"),
32 PINCTRL_PIN(7, "GPIO_7"),
33 PINCTRL_PIN(8, "GPIO_8"),
34 PINCTRL_PIN(9, "GPIO_9"),
35 PINCTRL_PIN(10, "GPIO_10"),
36 PINCTRL_PIN(11, "GPIO_11"),
37 PINCTRL_PIN(12, "GPIO_12"),
38 PINCTRL_PIN(13, "GPIO_13"),
39 PINCTRL_PIN(14, "GPIO_14"),
40 PINCTRL_PIN(15, "GPIO_15"),
41 PINCTRL_PIN(16, "GPIO_16"),
42 PINCTRL_PIN(17, "GPIO_17"),
43 PINCTRL_PIN(18, "GPIO_18"),
44 PINCTRL_PIN(19, "GPIO_19"),
45 PINCTRL_PIN(20, "GPIO_20"),
46 PINCTRL_PIN(21, "GPIO_21"),
47 PINCTRL_PIN(22, "GPIO_22"),
48 PINCTRL_PIN(23, "GPIO_23"),
49 PINCTRL_PIN(24, "GPIO_24"),
50 PINCTRL_PIN(25, "GPIO_25"),
51 PINCTRL_PIN(26, "GPIO_26"),
52 PINCTRL_PIN(27, "GPIO_27"),
53 PINCTRL_PIN(28, "GPIO_28"),
54 PINCTRL_PIN(29, "GPIO_29"),
55 PINCTRL_PIN(30, "GPIO_30"),
56 PINCTRL_PIN(31, "GPIO_31"),
57 PINCTRL_PIN(32, "GPIO_32"),
58 PINCTRL_PIN(33, "GPIO_33"),
59 PINCTRL_PIN(34, "GPIO_34"),
60 PINCTRL_PIN(35, "GPIO_35"),
61 PINCTRL_PIN(36, "GPIO_36"),
62 PINCTRL_PIN(37, "GPIO_37"),
63 PINCTRL_PIN(38, "GPIO_38"),
64 PINCTRL_PIN(39, "GPIO_39"),
65 PINCTRL_PIN(40, "GPIO_40"),
66 PINCTRL_PIN(41, "GPIO_41"),
67 PINCTRL_PIN(42, "GPIO_42"),
68 PINCTRL_PIN(43, "GPIO_43"),
69 PINCTRL_PIN(44, "GPIO_44"),
70 PINCTRL_PIN(45, "GPIO_45"),
71 PINCTRL_PIN(46, "GPIO_46"),
72 PINCTRL_PIN(47, "GPIO_47"),
73 PINCTRL_PIN(48, "GPIO_48"),
74 PINCTRL_PIN(49, "GPIO_49"),
75 PINCTRL_PIN(50, "GPIO_50"),
76 PINCTRL_PIN(51, "GPIO_51"),
77 PINCTRL_PIN(52, "GPIO_52"),
78 PINCTRL_PIN(53, "GPIO_53"),
79 PINCTRL_PIN(54, "GPIO_54"),
80 PINCTRL_PIN(55, "GPIO_55"),
81 PINCTRL_PIN(56, "GPIO_56"),
82 PINCTRL_PIN(57, "GPIO_57"),
83 PINCTRL_PIN(58, "GPIO_58"),
84 PINCTRL_PIN(59, "GPIO_59"),
85 PINCTRL_PIN(60, "GPIO_60"),
86 PINCTRL_PIN(61, "GPIO_61"),
87 PINCTRL_PIN(62, "GPIO_62"),
88 PINCTRL_PIN(63, "GPIO_63"),
89 PINCTRL_PIN(64, "GPIO_64"),
90 PINCTRL_PIN(65, "GPIO_65"),
91 PINCTRL_PIN(66, "GPIO_66"),
92 PINCTRL_PIN(67, "GPIO_67"),
93 PINCTRL_PIN(68, "GPIO_68"),
94 PINCTRL_PIN(69, "GPIO_69"),
95 PINCTRL_PIN(70, "GPIO_70"),
96 PINCTRL_PIN(71, "GPIO_71"),
97 PINCTRL_PIN(72, "GPIO_72"),
98 PINCTRL_PIN(73, "GPIO_73"),
99 PINCTRL_PIN(74, "GPIO_74"),
100 PINCTRL_PIN(75, "GPIO_75"),
101 PINCTRL_PIN(76, "GPIO_76"),
102 PINCTRL_PIN(77, "GPIO_77"),
103 PINCTRL_PIN(78, "GPIO_78"),
104 PINCTRL_PIN(79, "GPIO_79"),
105 PINCTRL_PIN(80, "GPIO_80"),
106 PINCTRL_PIN(81, "GPIO_81"),
107 PINCTRL_PIN(82, "GPIO_82"),
108 PINCTRL_PIN(83, "GPIO_83"),
109 PINCTRL_PIN(84, "GPIO_84"),
110 PINCTRL_PIN(85, "GPIO_85"),
111 PINCTRL_PIN(86, "GPIO_86"),
112 PINCTRL_PIN(87, "GPIO_87"),
113};
114
115#define DECLARE_MSM_GPIO_PINS(pin) \
116 static const unsigned int gpio##pin##_pins[] = { pin }
117DECLARE_MSM_GPIO_PINS(0);
118DECLARE_MSM_GPIO_PINS(1);
119DECLARE_MSM_GPIO_PINS(2);
120DECLARE_MSM_GPIO_PINS(3);
121DECLARE_MSM_GPIO_PINS(4);
122DECLARE_MSM_GPIO_PINS(5);
123DECLARE_MSM_GPIO_PINS(6);
124DECLARE_MSM_GPIO_PINS(7);
125DECLARE_MSM_GPIO_PINS(8);
126DECLARE_MSM_GPIO_PINS(9);
127DECLARE_MSM_GPIO_PINS(10);
128DECLARE_MSM_GPIO_PINS(11);
129DECLARE_MSM_GPIO_PINS(12);
130DECLARE_MSM_GPIO_PINS(13);
131DECLARE_MSM_GPIO_PINS(14);
132DECLARE_MSM_GPIO_PINS(15);
133DECLARE_MSM_GPIO_PINS(16);
134DECLARE_MSM_GPIO_PINS(17);
135DECLARE_MSM_GPIO_PINS(18);
136DECLARE_MSM_GPIO_PINS(19);
137DECLARE_MSM_GPIO_PINS(20);
138DECLARE_MSM_GPIO_PINS(21);
139DECLARE_MSM_GPIO_PINS(22);
140DECLARE_MSM_GPIO_PINS(23);
141DECLARE_MSM_GPIO_PINS(24);
142DECLARE_MSM_GPIO_PINS(25);
143DECLARE_MSM_GPIO_PINS(26);
144DECLARE_MSM_GPIO_PINS(27);
145DECLARE_MSM_GPIO_PINS(28);
146DECLARE_MSM_GPIO_PINS(29);
147DECLARE_MSM_GPIO_PINS(30);
148DECLARE_MSM_GPIO_PINS(31);
149DECLARE_MSM_GPIO_PINS(32);
150DECLARE_MSM_GPIO_PINS(33);
151DECLARE_MSM_GPIO_PINS(34);
152DECLARE_MSM_GPIO_PINS(35);
153DECLARE_MSM_GPIO_PINS(36);
154DECLARE_MSM_GPIO_PINS(37);
155DECLARE_MSM_GPIO_PINS(38);
156DECLARE_MSM_GPIO_PINS(39);
157DECLARE_MSM_GPIO_PINS(40);
158DECLARE_MSM_GPIO_PINS(41);
159DECLARE_MSM_GPIO_PINS(42);
160DECLARE_MSM_GPIO_PINS(43);
161DECLARE_MSM_GPIO_PINS(44);
162DECLARE_MSM_GPIO_PINS(45);
163DECLARE_MSM_GPIO_PINS(46);
164DECLARE_MSM_GPIO_PINS(47);
165DECLARE_MSM_GPIO_PINS(48);
166DECLARE_MSM_GPIO_PINS(49);
167DECLARE_MSM_GPIO_PINS(50);
168DECLARE_MSM_GPIO_PINS(51);
169DECLARE_MSM_GPIO_PINS(52);
170DECLARE_MSM_GPIO_PINS(53);
171DECLARE_MSM_GPIO_PINS(54);
172DECLARE_MSM_GPIO_PINS(55);
173DECLARE_MSM_GPIO_PINS(56);
174DECLARE_MSM_GPIO_PINS(57);
175DECLARE_MSM_GPIO_PINS(58);
176DECLARE_MSM_GPIO_PINS(59);
177DECLARE_MSM_GPIO_PINS(60);
178DECLARE_MSM_GPIO_PINS(61);
179DECLARE_MSM_GPIO_PINS(62);
180DECLARE_MSM_GPIO_PINS(63);
181DECLARE_MSM_GPIO_PINS(64);
182DECLARE_MSM_GPIO_PINS(65);
183DECLARE_MSM_GPIO_PINS(66);
184DECLARE_MSM_GPIO_PINS(67);
185DECLARE_MSM_GPIO_PINS(68);
186DECLARE_MSM_GPIO_PINS(69);
187DECLARE_MSM_GPIO_PINS(70);
188DECLARE_MSM_GPIO_PINS(71);
189DECLARE_MSM_GPIO_PINS(72);
190DECLARE_MSM_GPIO_PINS(73);
191DECLARE_MSM_GPIO_PINS(74);
192DECLARE_MSM_GPIO_PINS(75);
193DECLARE_MSM_GPIO_PINS(76);
194DECLARE_MSM_GPIO_PINS(77);
195DECLARE_MSM_GPIO_PINS(78);
196DECLARE_MSM_GPIO_PINS(79);
197DECLARE_MSM_GPIO_PINS(80);
198DECLARE_MSM_GPIO_PINS(81);
199DECLARE_MSM_GPIO_PINS(82);
200DECLARE_MSM_GPIO_PINS(83);
201DECLARE_MSM_GPIO_PINS(84);
202DECLARE_MSM_GPIO_PINS(85);
203DECLARE_MSM_GPIO_PINS(86);
204DECLARE_MSM_GPIO_PINS(87);
205
206#define FUNCTION(fname) \
207 [MSM_MUX_##fname] = { \
208 .name = #fname, \
209 .groups = fname##_groups, \
210 .ngroups = ARRAY_SIZE(fname##_groups), \
211 }
212
213#define PINGROUP(id, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) \
214 { \
215 .name = "gpio" #id, \
216 .pins = gpio##id##_pins, \
217 .npins = ARRAY_SIZE(gpio##id##_pins), \
218 .funcs = (int[]){ \
219 MSM_MUX_gpio, \
220 MSM_MUX_##f1, \
221 MSM_MUX_##f2, \
222 MSM_MUX_##f3, \
223 MSM_MUX_##f4, \
224 MSM_MUX_##f5, \
225 MSM_MUX_##f6, \
226 MSM_MUX_##f7, \
227 MSM_MUX_##f8, \
228 MSM_MUX_##f9, \
229 MSM_MUX_##f10, \
230 MSM_MUX_##f11 \
231 }, \
232 .nfuncs = 12, \
233 .ctl_reg = 0x1000 + 0x10 * id, \
234 .io_reg = 0x1004 + 0x10 * id, \
235 .intr_cfg_reg = 0x1008 + 0x10 * id, \
236 .intr_status_reg = 0x100c + 0x10 * id, \
237 .intr_target_reg = 0x400 + 0x4 * id, \
238 .mux_bit = 2, \
239 .pull_bit = 0, \
240 .drv_bit = 6, \
241 .oe_bit = 9, \
242 .in_bit = 0, \
243 .out_bit = 1, \
244 .intr_enable_bit = 0, \
245 .intr_status_bit = 0, \
246 .intr_ack_high = 1, \
247 .intr_target_bit = 0, \
248 .intr_target_kpss_val = 4, \
249 .intr_raw_status_bit = 3, \
250 .intr_polarity_bit = 1, \
251 .intr_detection_bit = 2, \
252 .intr_detection_width = 1, \
253 }
254
255enum mdm9615_functions {
256 MSM_MUX_gpio,
257 MSM_MUX_gsbi2_i2c,
258 MSM_MUX_gsbi3,
259 MSM_MUX_gsbi4,
260 MSM_MUX_gsbi5_i2c,
261 MSM_MUX_gsbi5_uart,
262 MSM_MUX_sdc2,
263 MSM_MUX_ebi2_lcdc,
264 MSM_MUX_ps_hold,
265 MSM_MUX_prim_audio,
266 MSM_MUX_sec_audio,
267 MSM_MUX_cdc_mclk,
268 MSM_MUX_NA,
269};
270
271static const char * const gpio_groups[] = {
272 "gpio0", "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7",
273 "gpio8", "gpio9", "gpio10", "gpio11", "gpio12", "gpio13", "gpio14",
274 "gpio15", "gpio16", "gpio17", "gpio18", "gpio19", "gpio20", "gpio21",
275 "gpio22", "gpio23", "gpio24", "gpio25", "gpio26", "gpio27", "gpio28",
276 "gpio29", "gpio30", "gpio31", "gpio32", "gpio33", "gpio34", "gpio35",
277 "gpio36", "gpio37", "gpio38", "gpio39", "gpio40", "gpio41", "gpio42",
278 "gpio43", "gpio44", "gpio45", "gpio46", "gpio47", "gpio48", "gpio49",
279 "gpio50", "gpio51", "gpio52", "gpio53", "gpio54", "gpio55", "gpio56",
280 "gpio57", "gpio58", "gpio59", "gpio60", "gpio61", "gpio62", "gpio63",
281 "gpio64", "gpio65", "gpio66", "gpio67", "gpio68", "gpio69", "gpio70",
282 "gpio71", "gpio72", "gpio73", "gpio74", "gpio75", "gpio76", "gpio77",
283 "gpio78", "gpio79", "gpio80", "gpio81", "gpio82", "gpio83", "gpio84",
284 "gpio85", "gpio86", "gpio87"
285};
286
287static const char * const gsbi2_i2c_groups[] = {
288 "gpio4", "gpio5"
289};
290
291static const char * const gsbi3_groups[] = {
292 "gpio8", "gpio9", "gpio10", "gpio11"
293};
294
295static const char * const gsbi4_groups[] = {
296 "gpio12", "gpio13", "gpio14", "gpio15"
297};
298
299static const char * const gsbi5_i2c_groups[] = {
300 "gpio16", "gpio17"
301};
302
303static const char * const gsbi5_uart_groups[] = {
304 "gpio18", "gpio19"
305};
306
307static const char * const sdc2_groups[] = {
308 "gpio25", "gpio26", "gpio27", "gpio28", "gpio29", "gpio30",
309};
310
311static const char * const ebi2_lcdc_groups[] = {
312 "gpio21", "gpio22", "gpio24",
313};
314
315static const char * const ps_hold_groups[] = {
316 "gpio83",
317};
318
319static const char * const prim_audio_groups[] = {
320 "gpio20", "gpio21", "gpio22", "gpio23",
321};
322
323static const char * const sec_audio_groups[] = {
324 "gpio25", "gpio26", "gpio27", "gpio28",
325};
326
327static const char * const cdc_mclk_groups[] = {
328 "gpio24",
329};
330
331static const struct msm_function mdm9615_functions[] = {
332 FUNCTION(gpio),
333 FUNCTION(gsbi2_i2c),
334 FUNCTION(gsbi3),
335 FUNCTION(gsbi4),
336 FUNCTION(gsbi5_i2c),
337 FUNCTION(gsbi5_uart),
338 FUNCTION(sdc2),
339 FUNCTION(ebi2_lcdc),
340 FUNCTION(ps_hold),
341 FUNCTION(prim_audio),
342 FUNCTION(sec_audio),
343 FUNCTION(cdc_mclk),
344};
345
346static const struct msm_pingroup mdm9615_groups[] = {
347 PINGROUP(0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
348 PINGROUP(1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
349 PINGROUP(2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
350 PINGROUP(3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
351 PINGROUP(4, gsbi2_i2c, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
352 PINGROUP(5, gsbi2_i2c, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
353 PINGROUP(6, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
354 PINGROUP(7, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
355 PINGROUP(8, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
356 PINGROUP(9, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
357 PINGROUP(10, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
358 PINGROUP(11, gsbi3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
359 PINGROUP(12, gsbi4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
360 PINGROUP(13, gsbi4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
361 PINGROUP(14, gsbi4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
362 PINGROUP(15, gsbi4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
363 PINGROUP(16, gsbi5_i2c, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
364 PINGROUP(17, gsbi5_i2c, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
365 PINGROUP(18, gsbi5_uart, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
366 PINGROUP(19, gsbi5_uart, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
367 PINGROUP(20, prim_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
368 PINGROUP(21, prim_audio, ebi2_lcdc, NA, NA, NA, NA, NA, NA, NA, NA, NA),
369 PINGROUP(22, prim_audio, ebi2_lcdc, NA, NA, NA, NA, NA, NA, NA, NA, NA),
370 PINGROUP(23, prim_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
371 PINGROUP(24, cdc_mclk, NA, ebi2_lcdc, NA, NA, NA, NA, NA, NA, NA, NA),
372 PINGROUP(25, sdc2, sec_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA),
373 PINGROUP(26, sdc2, sec_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA),
374 PINGROUP(27, sdc2, sec_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA),
375 PINGROUP(28, sdc2, sec_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA),
376 PINGROUP(29, sdc2, sec_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA),
377 PINGROUP(30, sdc2, sec_audio, NA, NA, NA, NA, NA, NA, NA, NA, NA),
378 PINGROUP(31, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
379 PINGROUP(32, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
380 PINGROUP(33, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
381 PINGROUP(34, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
382 PINGROUP(35, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
383 PINGROUP(36, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
384 PINGROUP(37, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
385 PINGROUP(38, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
386 PINGROUP(39, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
387 PINGROUP(40, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
388 PINGROUP(41, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
389 PINGROUP(42, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
390 PINGROUP(43, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
391 PINGROUP(44, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
392 PINGROUP(45, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
393 PINGROUP(46, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
394 PINGROUP(47, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
395 PINGROUP(48, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
396 PINGROUP(49, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
397 PINGROUP(50, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
398 PINGROUP(51, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
399 PINGROUP(52, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
400 PINGROUP(53, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
401 PINGROUP(54, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
402 PINGROUP(55, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
403 PINGROUP(56, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
404 PINGROUP(57, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
405 PINGROUP(58, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
406 PINGROUP(59, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
407 PINGROUP(60, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
408 PINGROUP(61, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
409 PINGROUP(62, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
410 PINGROUP(63, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
411 PINGROUP(64, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
412 PINGROUP(65, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
413 PINGROUP(66, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
414 PINGROUP(67, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
415 PINGROUP(68, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
416 PINGROUP(69, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
417 PINGROUP(70, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
418 PINGROUP(71, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
419 PINGROUP(72, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
420 PINGROUP(73, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
421 PINGROUP(74, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
422 PINGROUP(75, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
423 PINGROUP(76, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
424 PINGROUP(77, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
425 PINGROUP(78, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
426 PINGROUP(79, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
427 PINGROUP(80, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
428 PINGROUP(81, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
429 PINGROUP(82, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
430 PINGROUP(83, ps_hold, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
431 PINGROUP(84, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
432 PINGROUP(85, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
433 PINGROUP(86, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
434 PINGROUP(87, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
435};
436
437#define NUM_GPIO_PINGROUPS 88
438
439static const struct msm_pinctrl_soc_data mdm9615_pinctrl = {
440 .pins = mdm9615_pins,
441 .npins = ARRAY_SIZE(mdm9615_pins),
442 .functions = mdm9615_functions,
443 .nfunctions = ARRAY_SIZE(mdm9615_functions),
444 .groups = mdm9615_groups,
445 .ngroups = ARRAY_SIZE(mdm9615_groups),
446 .ngpios = NUM_GPIO_PINGROUPS,
447};
448
449static int mdm9615_pinctrl_probe(struct platform_device *pdev)
450{
451 return msm_pinctrl_probe(pdev, &mdm9615_pinctrl);
452}
453
454static const struct of_device_id mdm9615_pinctrl_of_match[] = {
455 { .compatible = "qcom,mdm9615-pinctrl", },
456 { },
457};
458
459static struct platform_driver mdm9615_pinctrl_driver = {
460 .driver = {
461 .name = "mdm9615-pinctrl",
462 .of_match_table = mdm9615_pinctrl_of_match,
463 },
464 .probe = mdm9615_pinctrl_probe,
465 .remove = msm_pinctrl_remove,
466};
467
468static int __init mdm9615_pinctrl_init(void)
469{
470 return platform_driver_register(&mdm9615_pinctrl_driver);
471}
472arch_initcall(mdm9615_pinctrl_init);
473
474static void __exit mdm9615_pinctrl_exit(void)
475{
476 platform_driver_unregister(&mdm9615_pinctrl_driver);
477}
478module_exit(mdm9615_pinctrl_exit);
479
480MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
481MODULE_DESCRIPTION("Qualcomm MDM9615 pinctrl driver");
482MODULE_LICENSE("GPL v2");
483MODULE_DEVICE_TABLE(of, mdm9615_pinctrl_of_match);
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index 1a44e1d03390..51c42d746883 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -29,6 +29,7 @@
29#include <linux/spinlock.h> 29#include <linux/spinlock.h>
30#include <linux/reboot.h> 30#include <linux/reboot.h>
31#include <linux/pm.h> 31#include <linux/pm.h>
32#include <linux/log2.h>
32 33
33#include "../core.h" 34#include "../core.h"
34#include "../pinconf.h" 35#include "../pinconf.h"
@@ -138,10 +139,11 @@ static int msm_pinmux_set_mux(struct pinctrl_dev *pctldev,
138 struct msm_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 139 struct msm_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev);
139 const struct msm_pingroup *g; 140 const struct msm_pingroup *g;
140 unsigned long flags; 141 unsigned long flags;
141 u32 val; 142 u32 val, mask;
142 int i; 143 int i;
143 144
144 g = &pctrl->soc->groups[group]; 145 g = &pctrl->soc->groups[group];
146 mask = GENMASK(g->mux_bit + order_base_2(g->nfuncs) - 1, g->mux_bit);
145 147
146 for (i = 0; i < g->nfuncs; i++) { 148 for (i = 0; i < g->nfuncs; i++) {
147 if (g->funcs[i] == function) 149 if (g->funcs[i] == function)
@@ -154,7 +156,7 @@ static int msm_pinmux_set_mux(struct pinctrl_dev *pctldev,
154 spin_lock_irqsave(&pctrl->lock, flags); 156 spin_lock_irqsave(&pctrl->lock, flags);
155 157
156 val = readl(pctrl->regs + g->ctl_reg); 158 val = readl(pctrl->regs + g->ctl_reg);
157 val &= ~(0x7 << g->mux_bit); 159 val &= mask;
158 val |= i << g->mux_bit; 160 val |= i << g->mux_bit;
159 writel(val, pctrl->regs + g->ctl_reg); 161 writel(val, pctrl->regs + g->ctl_reg);
160 162
diff --git a/drivers/pinctrl/qcom/pinctrl-msm8660.c b/drivers/pinctrl/qcom/pinctrl-msm8660.c
index 3e8f7ac2ac8a..5591d093bf78 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm8660.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm8660.c
@@ -506,6 +506,8 @@ enum msm8660_functions {
506 MSM_MUX_usb_fs2_oe_n, 506 MSM_MUX_usb_fs2_oe_n,
507 MSM_MUX_vfe, 507 MSM_MUX_vfe,
508 MSM_MUX_vsens_alarm, 508 MSM_MUX_vsens_alarm,
509 MSM_MUX_ebi2cs,
510 MSM_MUX_ebi2,
509 MSM_MUX__, 511 MSM_MUX__,
510}; 512};
511 513
@@ -696,6 +698,36 @@ static const char * const vfe_groups[] = {
696static const char * const vsens_alarm_groups[] = { 698static const char * const vsens_alarm_groups[] = {
697 "gpio127" 699 "gpio127"
698}; 700};
701static const char * const ebi2cs_groups[] = {
702 "gpio39", /* CS1A */
703 "gpio40", /* CS2A */
704 "gpio123", /* CS1B */
705 "gpio124", /* CS2B */
706 "gpio131", /* CS5 */
707 "gpio132", /* CS4 */
708 "gpio133", /* CS3 */
709 "gpio134", /* CS0 */
710};
711static const char * const ebi2_groups[] = {
712 /* ADDR9 & ADDR8 */
713 "gpio37", "gpio38",
714 /* ADDR7 - ADDR 0 */
715 "gpio123", "gpio124", "gpio125", "gpio126",
716 "gpio127", "gpio128", "gpio129", "gpio130",
717 /* (muxed address+data) AD15 - AD0 */
718 "gpio135", "gpio136", "gpio137", "gpio138", "gpio139",
719 "gpio140", "gpio141", "gpio142", "gpio143", "gpio144",
720 "gpio145", "gpio146", "gpio147", "gpio148", "gpio149",
721 "gpio150",
722 "gpio151", /* OE output enable */
723 "gpio152", /* clock */
724 "gpio153", /* ADV */
725 "gpio154", /* WAIT (input) */
726 "gpio155", /* UB Upper Byte Enable */
727 "gpio156", /* LB Lower Byte Enable */
728 "gpio157", /* WE Write Enable */
729 "gpio158", /* busy */
730};
699 731
700static const struct msm_function msm8660_functions[] = { 732static const struct msm_function msm8660_functions[] = {
701 FUNCTION(gpio), 733 FUNCTION(gpio),
@@ -749,6 +781,8 @@ static const struct msm_function msm8660_functions[] = {
749 FUNCTION(usb_fs2_oe_n), 781 FUNCTION(usb_fs2_oe_n),
750 FUNCTION(vfe), 782 FUNCTION(vfe),
751 FUNCTION(vsens_alarm), 783 FUNCTION(vsens_alarm),
784 FUNCTION(ebi2cs), /* for EBI2 chip selects */
785 FUNCTION(ebi2), /* for general EBI2 pins */
752}; 786};
753 787
754static const struct msm_pingroup msm8660_groups[] = { 788static const struct msm_pingroup msm8660_groups[] = {
@@ -789,10 +823,10 @@ static const struct msm_pingroup msm8660_groups[] = {
789 PINGROUP(34, gsbi1, _, _, _, _, _, _), 823 PINGROUP(34, gsbi1, _, _, _, _, _, _),
790 PINGROUP(35, gsbi1, _, _, _, _, _, _), 824 PINGROUP(35, gsbi1, _, _, _, _, _, _),
791 PINGROUP(36, gsbi1, _, _, _, _, _, _), 825 PINGROUP(36, gsbi1, _, _, _, _, _, _),
792 PINGROUP(37, gsbi2, _, _, _, _, _, _), 826 PINGROUP(37, gsbi2, ebi2, _, _, _, _, _),
793 PINGROUP(38, gsbi2, _, _, _, _, _, _), 827 PINGROUP(38, gsbi2, ebi2, _, _, _, _, _),
794 PINGROUP(39, gsbi2, _, mdp_vsync, _, _, _, _), 828 PINGROUP(39, gsbi2, ebi2cs, mdp_vsync, _, _, _, _),
795 PINGROUP(40, gsbi2, _, _, _, _, _, _), 829 PINGROUP(40, gsbi2, ebi2cs, _, _, _, _, _),
796 PINGROUP(41, gsbi3, mdp_vsync, _, _, _, _, _), 830 PINGROUP(41, gsbi3, mdp_vsync, _, _, _, _, _),
797 PINGROUP(42, gsbi3, vfe, _, _, _, _, _), 831 PINGROUP(42, gsbi3, vfe, _, _, _, _, _),
798 PINGROUP(43, gsbi3, _, _, _, _, _, _), 832 PINGROUP(43, gsbi3, _, _, _, _, _, _),
@@ -875,42 +909,42 @@ static const struct msm_pingroup msm8660_groups[] = {
875 PINGROUP(120, i2s, _, _, _, _, _, _), 909 PINGROUP(120, i2s, _, _, _, _, _, _),
876 PINGROUP(121, i2s, _, _, _, _, _, _), 910 PINGROUP(121, i2s, _, _, _, _, _, _),
877 PINGROUP(122, i2s, gp_clk_1b, _, _, _, _, _), 911 PINGROUP(122, i2s, gp_clk_1b, _, _, _, _, _),
878 PINGROUP(123, _, gsbi2_spi_cs1_n, _, _, _, _, _), 912 PINGROUP(123, ebi2, gsbi2_spi_cs1_n, ebi2cs, _, _, _, _),
879 PINGROUP(124, _, gsbi2_spi_cs2_n, _, _, _, _, _), 913 PINGROUP(124, ebi2, gsbi2_spi_cs2_n, ebi2cs, _, _, _, _),
880 PINGROUP(125, _, gsbi2_spi_cs3_n, _, _, _, _, _), 914 PINGROUP(125, ebi2, gsbi2_spi_cs3_n, _, _, _, _, _),
881 PINGROUP(126, _, _, _, _, _, _, _), 915 PINGROUP(126, ebi2, _, _, _, _, _, _),
882 PINGROUP(127, _, vsens_alarm, _, _, _, _, _), 916 PINGROUP(127, ebi2, vsens_alarm, _, _, _, _, _),
883 PINGROUP(128, _, _, _, _, _, _, _), 917 PINGROUP(128, ebi2, _, _, _, _, _, _),
884 PINGROUP(129, _, _, _, _, _, _, _), 918 PINGROUP(129, ebi2, _, _, _, _, _, _),
885 PINGROUP(130, _, _, _, _, _, _, _), 919 PINGROUP(130, ebi2, _, _, _, _, _, _),
886 PINGROUP(131, _, _, _, _, _, _, _), 920 PINGROUP(131, ebi2cs, _, _, _, _, _, _),
887 PINGROUP(132, _, _, _, _, _, _, _), 921 PINGROUP(132, ebi2cs, _, _, _, _, _, _),
888 PINGROUP(133, _, _, _, _, _, _, _), 922 PINGROUP(133, ebi2cs, _, _, _, _, _, _),
889 PINGROUP(134, _, _, _, _, _, _, _), 923 PINGROUP(134, ebi2cs, _, _, _, _, _, _),
890 PINGROUP(135, _, _, _, _, _, _, _), 924 PINGROUP(135, ebi2, _, _, _, _, _, _),
891 PINGROUP(136, _, _, _, _, _, _, _), 925 PINGROUP(136, ebi2, _, _, _, _, _, _),
892 PINGROUP(137, _, _, _, _, _, _, _), 926 PINGROUP(137, ebi2, _, _, _, _, _, _),
893 PINGROUP(138, _, _, _, _, _, _, _), 927 PINGROUP(138, ebi2, _, _, _, _, _, _),
894 PINGROUP(139, _, _, _, _, _, _, _), 928 PINGROUP(139, ebi2, _, _, _, _, _, _),
895 PINGROUP(140, _, _, _, _, _, _, _), 929 PINGROUP(140, ebi2, _, _, _, _, _, _),
896 PINGROUP(141, _, _, _, _, _, _, _), 930 PINGROUP(141, ebi2, _, _, _, _, _, _),
897 PINGROUP(142, _, _, _, _, _, _, _), 931 PINGROUP(142, ebi2, _, _, _, _, _, _),
898 PINGROUP(143, _, sdc2, _, _, _, _, _), 932 PINGROUP(143, ebi2, sdc2, _, _, _, _, _),
899 PINGROUP(144, _, sdc2, _, _, _, _, _), 933 PINGROUP(144, ebi2, sdc2, _, _, _, _, _),
900 PINGROUP(145, _, sdc2, _, _, _, _, _), 934 PINGROUP(145, ebi2, sdc2, _, _, _, _, _),
901 PINGROUP(146, _, sdc2, _, _, _, _, _), 935 PINGROUP(146, ebi2, sdc2, _, _, _, _, _),
902 PINGROUP(147, _, sdc2, _, _, _, _, _), 936 PINGROUP(147, ebi2, sdc2, _, _, _, _, _),
903 PINGROUP(148, _, sdc2, _, _, _, _, _), 937 PINGROUP(148, ebi2, sdc2, _, _, _, _, _),
904 PINGROUP(149, _, sdc2, _, _, _, _, _), 938 PINGROUP(149, ebi2, sdc2, _, _, _, _, _),
905 PINGROUP(150, _, sdc2, _, _, _, _, _), 939 PINGROUP(150, ebi2, sdc2, _, _, _, _, _),
906 PINGROUP(151, _, sdc2, _, _, _, _, _), 940 PINGROUP(151, ebi2, sdc2, _, _, _, _, _),
907 PINGROUP(152, _, sdc2, _, _, _, _, _), 941 PINGROUP(152, ebi2, sdc2, _, _, _, _, _),
908 PINGROUP(153, _, _, _, _, _, _, _), 942 PINGROUP(153, ebi2, _, _, _, _, _, _),
909 PINGROUP(154, _, _, _, _, _, _, _), 943 PINGROUP(154, ebi2, _, _, _, _, _, _),
910 PINGROUP(155, _, _, _, _, _, _, _), 944 PINGROUP(155, ebi2, _, _, _, _, _, _),
911 PINGROUP(156, _, _, _, _, _, _, _), 945 PINGROUP(156, ebi2, _, _, _, _, _, _),
912 PINGROUP(157, _, _, _, _, _, _, _), 946 PINGROUP(157, ebi2, _, _, _, _, _, _),
913 PINGROUP(158, _, _, _, _, _, _, _), 947 PINGROUP(158, ebi2, _, _, _, _, _, _),
914 PINGROUP(159, sdc1, _, _, _, _, _, _), 948 PINGROUP(159, sdc1, _, _, _, _, _, _),
915 PINGROUP(160, sdc1, _, _, _, _, _, _), 949 PINGROUP(160, sdc1, _, _, _, _, _, _),
916 PINGROUP(161, sdc1, _, _, _, _, _, _), 950 PINGROUP(161, sdc1, _, _, _, _, _, _),
diff --git a/drivers/pinctrl/qcom/pinctrl-msm8x74.c b/drivers/pinctrl/qcom/pinctrl-msm8x74.c
index 46fe6ad5f97e..9eb63d3403d4 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm8x74.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm8x74.c
@@ -172,6 +172,8 @@ static const struct pinctrl_pin_desc msm8x74_pins[] = {
172 PINCTRL_PIN(149, "SDC2_CLK"), 172 PINCTRL_PIN(149, "SDC2_CLK"),
173 PINCTRL_PIN(150, "SDC2_CMD"), 173 PINCTRL_PIN(150, "SDC2_CMD"),
174 PINCTRL_PIN(151, "SDC2_DATA"), 174 PINCTRL_PIN(151, "SDC2_DATA"),
175 PINCTRL_PIN(152, "HSIC_STROBE"),
176 PINCTRL_PIN(153, "HSIC_DATA"),
175}; 177};
176 178
177#define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin } 179#define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin }
@@ -328,6 +330,8 @@ static const unsigned int sdc1_data_pins[] = { 148 };
328static const unsigned int sdc2_clk_pins[] = { 149 }; 330static const unsigned int sdc2_clk_pins[] = { 149 };
329static const unsigned int sdc2_cmd_pins[] = { 150 }; 331static const unsigned int sdc2_cmd_pins[] = { 150 };
330static const unsigned int sdc2_data_pins[] = { 151 }; 332static const unsigned int sdc2_data_pins[] = { 151 };
333static const unsigned int hsic_strobe_pins[] = { 152 };
334static const unsigned int hsic_data_pins[] = { 153 };
331 335
332#define FUNCTION(fname) \ 336#define FUNCTION(fname) \
333 [MSM_MUX_##fname] = { \ 337 [MSM_MUX_##fname] = { \
@@ -399,6 +403,37 @@ static const unsigned int sdc2_data_pins[] = { 151 };
399 .intr_detection_width = -1, \ 403 .intr_detection_width = -1, \
400 } 404 }
401 405
406#define HSIC_PINGROUP(pg_name, ctl) \
407 { \
408 .name = #pg_name, \
409 .pins = pg_name##_pins, \
410 .npins = ARRAY_SIZE(pg_name##_pins), \
411 .funcs = (int[]){ \
412 MSM_MUX_gpio, \
413 MSM_MUX_hsic_ctl, \
414 }, \
415 .nfuncs = 2, \
416 .ctl_reg = ctl, \
417 .io_reg = 0, \
418 .intr_cfg_reg = 0, \
419 .intr_status_reg = 0, \
420 .intr_target_reg = 0, \
421 .mux_bit = 25, \
422 .pull_bit = -1, \
423 .drv_bit = -1, \
424 .oe_bit = -1, \
425 .in_bit = -1, \
426 .out_bit = -1, \
427 .intr_enable_bit = -1, \
428 .intr_status_bit = -1, \
429 .intr_target_bit = -1, \
430 .intr_target_kpss_val = -1, \
431 .intr_raw_status_bit = -1, \
432 .intr_polarity_bit = -1, \
433 .intr_detection_bit = -1, \
434 .intr_detection_width = -1, \
435 }
436
402/* 437/*
403 * TODO: Add the rest of the possible functions and fill out 438 * TODO: Add the rest of the possible functions and fill out
404 * the pingroup table below. 439 * the pingroup table below.
@@ -509,6 +544,7 @@ enum msm8x74_functions {
509 MSM_MUX_fm, 544 MSM_MUX_fm,
510 MSM_MUX_wlan, 545 MSM_MUX_wlan,
511 MSM_MUX_slimbus, 546 MSM_MUX_slimbus,
547 MSM_MUX_hsic_ctl,
512 MSM_MUX_NA, 548 MSM_MUX_NA,
513}; 549};
514 550
@@ -534,7 +570,8 @@ static const char * const gpio_groups[] = {
534 "gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128", 570 "gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128",
535 "gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134", 571 "gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134",
536 "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140", 572 "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140",
537 "gpio141", "gpio142", "gpio143", "gpio144", "gpio145" 573 "gpio141", "gpio142", "gpio143", "gpio144", "gpio145", "hsic_data",
574 "hsic_strobe",
538}; 575};
539 576
540static const char * const blsp_uart1_groups[] = { 577static const char * const blsp_uart1_groups[] = {
@@ -754,6 +791,7 @@ static const char * const wlan_groups[] = {
754}; 791};
755 792
756static const char * const slimbus_groups[] = { "gpio70", "gpio71" }; 793static const char * const slimbus_groups[] = { "gpio70", "gpio71" };
794static const char * const hsic_ctl_groups[] = { "hsic_strobe", "hsic_data" };
757 795
758static const struct msm_function msm8x74_functions[] = { 796static const struct msm_function msm8x74_functions[] = {
759 FUNCTION(gpio), 797 FUNCTION(gpio),
@@ -861,6 +899,7 @@ static const struct msm_function msm8x74_functions[] = {
861 FUNCTION(fm), 899 FUNCTION(fm),
862 FUNCTION(wlan), 900 FUNCTION(wlan),
863 FUNCTION(slimbus), 901 FUNCTION(slimbus),
902 FUNCTION(hsic_ctl),
864}; 903};
865 904
866static const struct msm_pingroup msm8x74_groups[] = { 905static const struct msm_pingroup msm8x74_groups[] = {
@@ -1016,6 +1055,8 @@ static const struct msm_pingroup msm8x74_groups[] = {
1016 SDC_PINGROUP(sdc2_clk, 0x2048, 14, 6), 1055 SDC_PINGROUP(sdc2_clk, 0x2048, 14, 6),
1017 SDC_PINGROUP(sdc2_cmd, 0x2048, 11, 3), 1056 SDC_PINGROUP(sdc2_cmd, 0x2048, 11, 3),
1018 SDC_PINGROUP(sdc2_data, 0x2048, 9, 0), 1057 SDC_PINGROUP(sdc2_data, 0x2048, 9, 0),
1058 HSIC_PINGROUP(hsic_strobe, 0x2050),
1059 HSIC_PINGROUP(hsic_data, 0x2054),
1019}; 1060};
1020 1061
1021#define NUM_GPIO_PINGROUPS 146 1062#define NUM_GPIO_PINGROUPS 146
diff --git a/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c b/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c
index 9191727aff5e..0d1392fc32dd 100644
--- a/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c
+++ b/drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c
@@ -744,6 +744,7 @@ static int pm8xxx_pin_populate(struct pm8xxx_mpp *pctrl,
744static const struct of_device_id pm8xxx_mpp_of_match[] = { 744static const struct of_device_id pm8xxx_mpp_of_match[] = {
745 { .compatible = "qcom,pm8018-mpp" }, 745 { .compatible = "qcom,pm8018-mpp" },
746 { .compatible = "qcom,pm8038-mpp" }, 746 { .compatible = "qcom,pm8038-mpp" },
747 { .compatible = "qcom,pm8058-mpp" },
747 { .compatible = "qcom,pm8917-mpp" }, 748 { .compatible = "qcom,pm8917-mpp" },
748 { .compatible = "qcom,pm8821-mpp" }, 749 { .compatible = "qcom,pm8821-mpp" },
749 { .compatible = "qcom,pm8921-mpp" }, 750 { .compatible = "qcom,pm8921-mpp" },
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos5440.c b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
index fb71fc3e5aa0..3000df80709f 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos5440.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos5440.c
@@ -998,6 +998,7 @@ static struct platform_driver exynos5440_pinctrl_driver = {
998 .driver = { 998 .driver = {
999 .name = "exynos5440-pinctrl", 999 .name = "exynos5440-pinctrl",
1000 .of_match_table = exynos5440_pinctrl_dt_match, 1000 .of_match_table = exynos5440_pinctrl_dt_match,
1001 .suppress_bind_attrs = true,
1001 }, 1002 },
1002}; 1003};
1003 1004
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
index ed0b70881e19..513fe6b23248 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.c
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
@@ -1274,6 +1274,7 @@ static struct platform_driver samsung_pinctrl_driver = {
1274 .driver = { 1274 .driver = {
1275 .name = "samsung-pinctrl", 1275 .name = "samsung-pinctrl",
1276 .of_match_table = samsung_pinctrl_dt_match, 1276 .of_match_table = samsung_pinctrl_dt_match,
1277 .suppress_bind_attrs = true,
1277 }, 1278 },
1278}; 1279};
1279 1280
diff --git a/drivers/pinctrl/sh-pfc/core.c b/drivers/pinctrl/sh-pfc/core.c
index 9b9cee06ec59..a3b82041b6a2 100644
--- a/drivers/pinctrl/sh-pfc/core.c
+++ b/drivers/pinctrl/sh-pfc/core.c
@@ -598,15 +598,6 @@ static int sh_pfc_probe(struct platform_device *pdev)
598 return 0; 598 return 0;
599} 599}
600 600
601static int sh_pfc_remove(struct platform_device *pdev)
602{
603#ifdef CONFIG_PINCTRL_SH_PFC_GPIO
604 sh_pfc_unregister_gpiochip(platform_get_drvdata(pdev));
605#endif
606
607 return 0;
608}
609
610static const struct platform_device_id sh_pfc_id_table[] = { 601static const struct platform_device_id sh_pfc_id_table[] = {
611#ifdef CONFIG_PINCTRL_PFC_SH7203 602#ifdef CONFIG_PINCTRL_PFC_SH7203
612 { "pfc-sh7203", (kernel_ulong_t)&sh7203_pinmux_info }, 603 { "pfc-sh7203", (kernel_ulong_t)&sh7203_pinmux_info },
@@ -650,7 +641,6 @@ static const struct platform_device_id sh_pfc_id_table[] = {
650 641
651static struct platform_driver sh_pfc_driver = { 642static struct platform_driver sh_pfc_driver = {
652 .probe = sh_pfc_probe, 643 .probe = sh_pfc_probe,
653 .remove = sh_pfc_remove,
654 .id_table = sh_pfc_id_table, 644 .id_table = sh_pfc_id_table,
655 .driver = { 645 .driver = {
656 .name = DRV_NAME, 646 .name = DRV_NAME,
diff --git a/drivers/pinctrl/sh-pfc/core.h b/drivers/pinctrl/sh-pfc/core.h
index dc1b2adb24c5..0bbdea5849f4 100644
--- a/drivers/pinctrl/sh-pfc/core.h
+++ b/drivers/pinctrl/sh-pfc/core.h
@@ -10,50 +10,16 @@
10#ifndef __SH_PFC_CORE_H__ 10#ifndef __SH_PFC_CORE_H__
11#define __SH_PFC_CORE_H__ 11#define __SH_PFC_CORE_H__
12 12
13#include <linux/compiler.h>
14#include <linux/spinlock.h>
15#include <linux/types.h> 13#include <linux/types.h>
16 14
17#include "sh_pfc.h" 15#include "sh_pfc.h"
18 16
19struct sh_pfc_window {
20 phys_addr_t phys;
21 void __iomem *virt;
22 unsigned long size;
23};
24
25struct sh_pfc_chip;
26struct sh_pfc_pinctrl;
27
28struct sh_pfc_pin_range { 17struct sh_pfc_pin_range {
29 u16 start; 18 u16 start;
30 u16 end; 19 u16 end;
31}; 20};
32 21
33struct sh_pfc {
34 struct device *dev;
35 const struct sh_pfc_soc_info *info;
36 spinlock_t lock;
37
38 unsigned int num_windows;
39 struct sh_pfc_window *windows;
40 unsigned int num_irqs;
41 unsigned int *irqs;
42
43 struct sh_pfc_pin_range *ranges;
44 unsigned int nr_ranges;
45
46 unsigned int nr_gpio_pins;
47
48 struct sh_pfc_chip *gpio;
49#ifdef CONFIG_SUPERH
50 struct sh_pfc_chip *func;
51#endif
52
53};
54
55int sh_pfc_register_gpiochip(struct sh_pfc *pfc); 22int sh_pfc_register_gpiochip(struct sh_pfc *pfc);
56int sh_pfc_unregister_gpiochip(struct sh_pfc *pfc);
57 23
58int sh_pfc_register_pinctrl(struct sh_pfc *pfc); 24int sh_pfc_register_pinctrl(struct sh_pfc *pfc);
59 25
@@ -67,28 +33,4 @@ void sh_pfc_write_reg(struct sh_pfc *pfc, u32 reg, unsigned int width,
67int sh_pfc_get_pin_index(struct sh_pfc *pfc, unsigned int pin); 33int sh_pfc_get_pin_index(struct sh_pfc *pfc, unsigned int pin);
68int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type); 34int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type);
69 35
70extern const struct sh_pfc_soc_info emev2_pinmux_info;
71extern const struct sh_pfc_soc_info r8a73a4_pinmux_info;
72extern const struct sh_pfc_soc_info r8a7740_pinmux_info;
73extern const struct sh_pfc_soc_info r8a7778_pinmux_info;
74extern const struct sh_pfc_soc_info r8a7779_pinmux_info;
75extern const struct sh_pfc_soc_info r8a7790_pinmux_info;
76extern const struct sh_pfc_soc_info r8a7791_pinmux_info;
77extern const struct sh_pfc_soc_info r8a7793_pinmux_info;
78extern const struct sh_pfc_soc_info r8a7794_pinmux_info;
79extern const struct sh_pfc_soc_info r8a7795_pinmux_info;
80extern const struct sh_pfc_soc_info sh7203_pinmux_info;
81extern const struct sh_pfc_soc_info sh7264_pinmux_info;
82extern const struct sh_pfc_soc_info sh7269_pinmux_info;
83extern const struct sh_pfc_soc_info sh73a0_pinmux_info;
84extern const struct sh_pfc_soc_info sh7720_pinmux_info;
85extern const struct sh_pfc_soc_info sh7722_pinmux_info;
86extern const struct sh_pfc_soc_info sh7723_pinmux_info;
87extern const struct sh_pfc_soc_info sh7724_pinmux_info;
88extern const struct sh_pfc_soc_info sh7734_pinmux_info;
89extern const struct sh_pfc_soc_info sh7757_pinmux_info;
90extern const struct sh_pfc_soc_info sh7785_pinmux_info;
91extern const struct sh_pfc_soc_info sh7786_pinmux_info;
92extern const struct sh_pfc_soc_info shx3_pinmux_info;
93
94#endif /* __SH_PFC_CORE_H__ */ 36#endif /* __SH_PFC_CORE_H__ */
diff --git a/drivers/pinctrl/sh-pfc/gpio.c b/drivers/pinctrl/sh-pfc/gpio.c
index 97dff6a09ff0..6b5422766f13 100644
--- a/drivers/pinctrl/sh-pfc/gpio.c
+++ b/drivers/pinctrl/sh-pfc/gpio.c
@@ -318,7 +318,7 @@ sh_pfc_add_gpiochip(struct sh_pfc *pfc, int(*setup)(struct sh_pfc_chip *),
318 if (ret < 0) 318 if (ret < 0)
319 return ERR_PTR(ret); 319 return ERR_PTR(ret);
320 320
321 ret = gpiochip_add_data(&chip->gpio_chip, chip); 321 ret = devm_gpiochip_add_data(pfc->dev, &chip->gpio_chip, chip);
322 if (unlikely(ret < 0)) 322 if (unlikely(ret < 0))
323 return ERR_PTR(ret); 323 return ERR_PTR(ret);
324 324
@@ -399,18 +399,7 @@ int sh_pfc_register_gpiochip(struct sh_pfc *pfc)
399 chip = sh_pfc_add_gpiochip(pfc, gpio_function_setup, NULL); 399 chip = sh_pfc_add_gpiochip(pfc, gpio_function_setup, NULL);
400 if (IS_ERR(chip)) 400 if (IS_ERR(chip))
401 return PTR_ERR(chip); 401 return PTR_ERR(chip);
402
403 pfc->func = chip;
404#endif /* CONFIG_SUPERH */ 402#endif /* CONFIG_SUPERH */
405 403
406 return 0; 404 return 0;
407} 405}
408
409int sh_pfc_unregister_gpiochip(struct sh_pfc *pfc)
410{
411 gpiochip_remove(&pfc->gpio->gpio_chip);
412#ifdef CONFIG_SUPERH
413 gpiochip_remove(&pfc->func->gpio_chip);
414#endif
415 return 0;
416}
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c b/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c
index d9d9228b15fa..ff5655dee67e 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a73a4.c
@@ -21,7 +21,6 @@
21#include <linux/kernel.h> 21#include <linux/kernel.h>
22#include <linux/pinctrl/pinconf-generic.h> 22#include <linux/pinctrl/pinconf-generic.h>
23 23
24#include "core.h"
25#include "sh_pfc.h" 24#include "sh_pfc.h"
26 25
27#define CPU_ALL_PORT(fn, pfx, sfx) \ 26#define CPU_ALL_PORT(fn, pfx, sfx) \
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7740.c b/drivers/pinctrl/sh-pfc/pfc-r8a7740.c
index 7f7c8a6e76e8..35f436bcb849 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a7740.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a7740.c
@@ -22,7 +22,6 @@
22#include <linux/kernel.h> 22#include <linux/kernel.h>
23#include <linux/pinctrl/pinconf-generic.h> 23#include <linux/pinctrl/pinconf-generic.h>
24 24
25#include "core.h"
26#include "sh_pfc.h" 25#include "sh_pfc.h"
27 26
28#define CPU_ALL_PORT(fn, pfx, sfx) \ 27#define CPU_ALL_PORT(fn, pfx, sfx) \
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7778.c b/drivers/pinctrl/sh-pfc/pfc-r8a7778.c
index 411d0887ba19..18ef7042b3d1 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a7778.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a7778.c
@@ -23,7 +23,7 @@
23#include <linux/io.h> 23#include <linux/io.h>
24#include <linux/kernel.h> 24#include <linux/kernel.h>
25#include <linux/pinctrl/pinconf-generic.h> 25#include <linux/pinctrl/pinconf-generic.h>
26#include "core.h" 26
27#include "sh_pfc.h" 27#include "sh_pfc.h"
28 28
29#define PORT_GP_PUP_1(bank, pin, fn, sfx) \ 29#define PORT_GP_PUP_1(bank, pin, fn, sfx) \
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c
index eed8daa464cc..b769c05480da 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c
@@ -24,7 +24,6 @@
24#include <linux/io.h> 24#include <linux/io.h>
25#include <linux/kernel.h> 25#include <linux/kernel.h>
26 26
27#include "core.h"
28#include "sh_pfc.h" 27#include "sh_pfc.h"
29 28
30/* 29/*
@@ -4696,47 +4695,6 @@ static const char * const vin3_groups[] = {
4696 "vin3_clk", 4695 "vin3_clk",
4697}; 4696};
4698 4697
4699#define IOCTRL6 0x8c
4700
4701static int r8a7790_get_io_voltage(struct sh_pfc *pfc, unsigned int pin)
4702{
4703 u32 data, mask;
4704
4705 if (WARN(pin < RCAR_GP_PIN(3, 0) || pin > RCAR_GP_PIN(3, 31), "invalid pin %#x", pin))
4706 return -EINVAL;
4707
4708 data = ioread32(pfc->windows->virt + IOCTRL6),
4709 /* Bits in IOCTRL6 are numbered in opposite order to pins */
4710 mask = 0x80000000 >> (pin & 0x1f);
4711
4712 return (data & mask) ? 3300 : 1800;
4713}
4714
4715static int r8a7790_set_io_voltage(struct sh_pfc *pfc, unsigned int pin, u16 mV)
4716{
4717 u32 data, mask;
4718
4719 if (WARN(pin < RCAR_GP_PIN(3, 0) || pin > RCAR_GP_PIN(3, 31), "invalid pin %#x", pin))
4720 return -EINVAL;
4721
4722 if (mV != 1800 && mV != 3300)
4723 return -EINVAL;
4724
4725 data = ioread32(pfc->windows->virt + IOCTRL6);
4726 /* Bits in IOCTRL6 are numbered in opposite order to pins */
4727 mask = 0x80000000 >> (pin & 0x1f);
4728
4729 if (mV == 3300)
4730 data |= mask;
4731 else
4732 data &= ~mask;
4733
4734 iowrite32(~data, pfc->windows->virt); /* unlock reg */
4735 iowrite32(data, pfc->windows->virt + IOCTRL6);
4736
4737 return 0;
4738}
4739
4740static const struct sh_pfc_function pinmux_functions[] = { 4698static const struct sh_pfc_function pinmux_functions[] = {
4741 SH_PFC_FUNCTION(audio_clk), 4699 SH_PFC_FUNCTION(audio_clk),
4742 SH_PFC_FUNCTION(avb), 4700 SH_PFC_FUNCTION(avb),
@@ -5736,14 +5694,23 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = {
5736 { }, 5694 { },
5737}; 5695};
5738 5696
5739static const struct sh_pfc_soc_operations pinmux_ops = { 5697static int r8a7790_pin_to_pocctrl(struct sh_pfc *pfc, unsigned int pin, u32 *pocctrl)
5740 .get_io_voltage = r8a7790_get_io_voltage, 5698{
5741 .set_io_voltage = r8a7790_set_io_voltage, 5699 if (pin < RCAR_GP_PIN(3, 0) || pin > RCAR_GP_PIN(3, 31))
5700 return -EINVAL;
5701
5702 *pocctrl = 0xe606008c;
5703
5704 return 31 - (pin & 0x1f);
5705}
5706
5707static const struct sh_pfc_soc_operations r8a7790_pinmux_ops = {
5708 .pin_to_pocctrl = r8a7790_pin_to_pocctrl,
5742}; 5709};
5743 5710
5744const struct sh_pfc_soc_info r8a7790_pinmux_info = { 5711const struct sh_pfc_soc_info r8a7790_pinmux_info = {
5745 .name = "r8a77900_pfc", 5712 .name = "r8a77900_pfc",
5746 .ops = &pinmux_ops, 5713 .ops = &r8a7790_pinmux_ops,
5747 .unlock_reg = 0xe6060000, /* PMMR */ 5714 .unlock_reg = 0xe6060000, /* PMMR */
5748 5715
5749 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, 5716 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
index 01abbd5b4e49..0c1a60c9a844 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a7791.c
@@ -11,7 +11,6 @@
11 11
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13 13
14#include "core.h"
15#include "sh_pfc.h" 14#include "sh_pfc.h"
16 15
17#define CPU_ALL_PORT(fn, sfx) \ 16#define CPU_ALL_PORT(fn, sfx) \
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c
index 44632b1a5c97..b74cdd310d83 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a7795.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a7795.c
@@ -17,8 +17,12 @@
17 PORT_GP_CFG_16(0, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 17 PORT_GP_CFG_16(0, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
18 PORT_GP_CFG_28(1, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 18 PORT_GP_CFG_28(1, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
19 PORT_GP_CFG_15(2, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 19 PORT_GP_CFG_15(2, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
20 PORT_GP_CFG_16(3, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 20 PORT_GP_CFG_12(3, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH | SH_PFC_PIN_CFG_IO_VOLTAGE), \
21 PORT_GP_CFG_18(4, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 21 PORT_GP_CFG_1(3, 12, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
22 PORT_GP_CFG_1(3, 13, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
23 PORT_GP_CFG_1(3, 14, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
24 PORT_GP_CFG_1(3, 15, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
25 PORT_GP_CFG_18(4, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH | SH_PFC_PIN_CFG_IO_VOLTAGE), \
22 PORT_GP_CFG_26(5, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 26 PORT_GP_CFG_26(5, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
23 PORT_GP_CFG_32(6, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 27 PORT_GP_CFG_32(6, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \
24 PORT_GP_CFG_4(7, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH) 28 PORT_GP_CFG_4(7, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH)
@@ -552,6 +556,9 @@ static const u16 pinmux_data[] = {
552 PINMUX_SINGLE(AVS2), 556 PINMUX_SINGLE(AVS2),
553 PINMUX_SINGLE(HDMI0_CEC), 557 PINMUX_SINGLE(HDMI0_CEC),
554 PINMUX_SINGLE(HDMI1_CEC), 558 PINMUX_SINGLE(HDMI1_CEC),
559 PINMUX_SINGLE(I2C_SEL_0_1),
560 PINMUX_SINGLE(I2C_SEL_3_1),
561 PINMUX_SINGLE(I2C_SEL_5_1),
555 PINMUX_SINGLE(MSIOF0_RXD), 562 PINMUX_SINGLE(MSIOF0_RXD),
556 PINMUX_SINGLE(MSIOF0_SCK), 563 PINMUX_SINGLE(MSIOF0_SCK),
557 PINMUX_SINGLE(MSIOF0_TXD), 564 PINMUX_SINGLE(MSIOF0_TXD),
@@ -1401,11 +1408,6 @@ static const u16 pinmux_data[] = {
1401 PINMUX_IPSR_MSEL(IP17_7_4, STP_ISSYNC_0_E, SEL_SSP1_0_4), 1408 PINMUX_IPSR_MSEL(IP17_7_4, STP_ISSYNC_0_E, SEL_SSP1_0_4),
1402 PINMUX_IPSR_MSEL(IP17_7_4, RIF2_D1_B, SEL_DRIF2_1), 1409 PINMUX_IPSR_MSEL(IP17_7_4, RIF2_D1_B, SEL_DRIF2_1),
1403 PINMUX_IPSR_GPSR(IP17_7_4, TPU0TO3), 1410 PINMUX_IPSR_GPSR(IP17_7_4, TPU0TO3),
1404
1405 /* I2C */
1406 PINMUX_IPSR_NOGP(0, I2C_SEL_0_1),
1407 PINMUX_IPSR_NOGP(0, I2C_SEL_3_1),
1408 PINMUX_IPSR_NOGP(0, I2C_SEL_5_1),
1409}; 1411};
1410 1412
1411static const struct sh_pfc_pin pinmux_pins[] = { 1413static const struct sh_pfc_pin pinmux_pins[] = {
@@ -1654,6 +1656,221 @@ static const unsigned int canfd1_data_mux[] = {
1654 CANFD1_TX_MARK, CANFD1_RX_MARK, 1656 CANFD1_TX_MARK, CANFD1_RX_MARK,
1655}; 1657};
1656 1658
1659/* - DRIF0 --------------------------------------------------------------- */
1660static const unsigned int drif0_ctrl_a_pins[] = {
1661 /* CLK, SYNC */
1662 RCAR_GP_PIN(6, 8), RCAR_GP_PIN(6, 9),
1663};
1664static const unsigned int drif0_ctrl_a_mux[] = {
1665 RIF0_CLK_A_MARK, RIF0_SYNC_A_MARK,
1666};
1667static const unsigned int drif0_data0_a_pins[] = {
1668 /* D0 */
1669 RCAR_GP_PIN(6, 10),
1670};
1671static const unsigned int drif0_data0_a_mux[] = {
1672 RIF0_D0_A_MARK,
1673};
1674static const unsigned int drif0_data1_a_pins[] = {
1675 /* D1 */
1676 RCAR_GP_PIN(6, 7),
1677};
1678static const unsigned int drif0_data1_a_mux[] = {
1679 RIF0_D1_A_MARK,
1680};
1681static const unsigned int drif0_ctrl_b_pins[] = {
1682 /* CLK, SYNC */
1683 RCAR_GP_PIN(5, 0), RCAR_GP_PIN(5, 4),
1684};
1685static const unsigned int drif0_ctrl_b_mux[] = {
1686 RIF0_CLK_B_MARK, RIF0_SYNC_B_MARK,
1687};
1688static const unsigned int drif0_data0_b_pins[] = {
1689 /* D0 */
1690 RCAR_GP_PIN(5, 1),
1691};
1692static const unsigned int drif0_data0_b_mux[] = {
1693 RIF0_D0_B_MARK,
1694};
1695static const unsigned int drif0_data1_b_pins[] = {
1696 /* D1 */
1697 RCAR_GP_PIN(5, 2),
1698};
1699static const unsigned int drif0_data1_b_mux[] = {
1700 RIF0_D1_B_MARK,
1701};
1702static const unsigned int drif0_ctrl_c_pins[] = {
1703 /* CLK, SYNC */
1704 RCAR_GP_PIN(5, 12), RCAR_GP_PIN(5, 15),
1705};
1706static const unsigned int drif0_ctrl_c_mux[] = {
1707 RIF0_CLK_C_MARK, RIF0_SYNC_C_MARK,
1708};
1709static const unsigned int drif0_data0_c_pins[] = {
1710 /* D0 */
1711 RCAR_GP_PIN(5, 13),
1712};
1713static const unsigned int drif0_data0_c_mux[] = {
1714 RIF0_D0_C_MARK,
1715};
1716static const unsigned int drif0_data1_c_pins[] = {
1717 /* D1 */
1718 RCAR_GP_PIN(5, 14),
1719};
1720static const unsigned int drif0_data1_c_mux[] = {
1721 RIF0_D1_C_MARK,
1722};
1723/* - DRIF1 --------------------------------------------------------------- */
1724static const unsigned int drif1_ctrl_a_pins[] = {
1725 /* CLK, SYNC */
1726 RCAR_GP_PIN(6, 17), RCAR_GP_PIN(6, 18),
1727};
1728static const unsigned int drif1_ctrl_a_mux[] = {
1729 RIF1_CLK_A_MARK, RIF1_SYNC_A_MARK,
1730};
1731static const unsigned int drif1_data0_a_pins[] = {
1732 /* D0 */
1733 RCAR_GP_PIN(6, 19),
1734};
1735static const unsigned int drif1_data0_a_mux[] = {
1736 RIF1_D0_A_MARK,
1737};
1738static const unsigned int drif1_data1_a_pins[] = {
1739 /* D1 */
1740 RCAR_GP_PIN(6, 20),
1741};
1742static const unsigned int drif1_data1_a_mux[] = {
1743 RIF1_D1_A_MARK,
1744};
1745static const unsigned int drif1_ctrl_b_pins[] = {
1746 /* CLK, SYNC */
1747 RCAR_GP_PIN(5, 9), RCAR_GP_PIN(5, 3),
1748};
1749static const unsigned int drif1_ctrl_b_mux[] = {
1750 RIF1_CLK_B_MARK, RIF1_SYNC_B_MARK,
1751};
1752static const unsigned int drif1_data0_b_pins[] = {
1753 /* D0 */
1754 RCAR_GP_PIN(5, 7),
1755};
1756static const unsigned int drif1_data0_b_mux[] = {
1757 RIF1_D0_B_MARK,
1758};
1759static const unsigned int drif1_data1_b_pins[] = {
1760 /* D1 */
1761 RCAR_GP_PIN(5, 8),
1762};
1763static const unsigned int drif1_data1_b_mux[] = {
1764 RIF1_D1_B_MARK,
1765};
1766static const unsigned int drif1_ctrl_c_pins[] = {
1767 /* CLK, SYNC */
1768 RCAR_GP_PIN(5, 5), RCAR_GP_PIN(5, 11),
1769};
1770static const unsigned int drif1_ctrl_c_mux[] = {
1771 RIF1_CLK_C_MARK, RIF1_SYNC_C_MARK,
1772};
1773static const unsigned int drif1_data0_c_pins[] = {
1774 /* D0 */
1775 RCAR_GP_PIN(5, 6),
1776};
1777static const unsigned int drif1_data0_c_mux[] = {
1778 RIF1_D0_C_MARK,
1779};
1780static const unsigned int drif1_data1_c_pins[] = {
1781 /* D1 */
1782 RCAR_GP_PIN(5, 10),
1783};
1784static const unsigned int drif1_data1_c_mux[] = {
1785 RIF1_D1_C_MARK,
1786};
1787/* - DRIF2 --------------------------------------------------------------- */
1788static const unsigned int drif2_ctrl_a_pins[] = {
1789 /* CLK, SYNC */
1790 RCAR_GP_PIN(6, 8), RCAR_GP_PIN(6, 9),
1791};
1792static const unsigned int drif2_ctrl_a_mux[] = {
1793 RIF2_CLK_A_MARK, RIF2_SYNC_A_MARK,
1794};
1795static const unsigned int drif2_data0_a_pins[] = {
1796 /* D0 */
1797 RCAR_GP_PIN(6, 7),
1798};
1799static const unsigned int drif2_data0_a_mux[] = {
1800 RIF2_D0_A_MARK,
1801};
1802static const unsigned int drif2_data1_a_pins[] = {
1803 /* D1 */
1804 RCAR_GP_PIN(6, 10),
1805};
1806static const unsigned int drif2_data1_a_mux[] = {
1807 RIF2_D1_A_MARK,
1808};
1809static const unsigned int drif2_ctrl_b_pins[] = {
1810 /* CLK, SYNC */
1811 RCAR_GP_PIN(6, 26), RCAR_GP_PIN(6, 27),
1812};
1813static const unsigned int drif2_ctrl_b_mux[] = {
1814 RIF2_CLK_B_MARK, RIF2_SYNC_B_MARK,
1815};
1816static const unsigned int drif2_data0_b_pins[] = {
1817 /* D0 */
1818 RCAR_GP_PIN(6, 30),
1819};
1820static const unsigned int drif2_data0_b_mux[] = {
1821 RIF2_D0_B_MARK,
1822};
1823static const unsigned int drif2_data1_b_pins[] = {
1824 /* D1 */
1825 RCAR_GP_PIN(6, 31),
1826};
1827static const unsigned int drif2_data1_b_mux[] = {
1828 RIF2_D1_B_MARK,
1829};
1830/* - DRIF3 --------------------------------------------------------------- */
1831static const unsigned int drif3_ctrl_a_pins[] = {
1832 /* CLK, SYNC */
1833 RCAR_GP_PIN(6, 17), RCAR_GP_PIN(6, 18),
1834};
1835static const unsigned int drif3_ctrl_a_mux[] = {
1836 RIF3_CLK_A_MARK, RIF3_SYNC_A_MARK,
1837};
1838static const unsigned int drif3_data0_a_pins[] = {
1839 /* D0 */
1840 RCAR_GP_PIN(6, 19),
1841};
1842static const unsigned int drif3_data0_a_mux[] = {
1843 RIF3_D0_A_MARK,
1844};
1845static const unsigned int drif3_data1_a_pins[] = {
1846 /* D1 */
1847 RCAR_GP_PIN(6, 20),
1848};
1849static const unsigned int drif3_data1_a_mux[] = {
1850 RIF3_D1_A_MARK,
1851};
1852static const unsigned int drif3_ctrl_b_pins[] = {
1853 /* CLK, SYNC */
1854 RCAR_GP_PIN(6, 24), RCAR_GP_PIN(6, 25),
1855};
1856static const unsigned int drif3_ctrl_b_mux[] = {
1857 RIF3_CLK_B_MARK, RIF3_SYNC_B_MARK,
1858};
1859static const unsigned int drif3_data0_b_pins[] = {
1860 /* D0 */
1861 RCAR_GP_PIN(6, 28),
1862};
1863static const unsigned int drif3_data0_b_mux[] = {
1864 RIF3_D0_B_MARK,
1865};
1866static const unsigned int drif3_data1_b_pins[] = {
1867 /* D1 */
1868 RCAR_GP_PIN(6, 29),
1869};
1870static const unsigned int drif3_data1_b_mux[] = {
1871 RIF3_D1_B_MARK,
1872};
1873
1657/* - HSCIF0 ----------------------------------------------------------------- */ 1874/* - HSCIF0 ----------------------------------------------------------------- */
1658static const unsigned int hscif0_data_pins[] = { 1875static const unsigned int hscif0_data_pins[] = {
1659 /* RX, TX */ 1876 /* RX, TX */
@@ -3346,6 +3563,36 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
3346 SH_PFC_PIN_GROUP(canfd0_data_a), 3563 SH_PFC_PIN_GROUP(canfd0_data_a),
3347 SH_PFC_PIN_GROUP(canfd0_data_b), 3564 SH_PFC_PIN_GROUP(canfd0_data_b),
3348 SH_PFC_PIN_GROUP(canfd1_data), 3565 SH_PFC_PIN_GROUP(canfd1_data),
3566 SH_PFC_PIN_GROUP(drif0_ctrl_a),
3567 SH_PFC_PIN_GROUP(drif0_data0_a),
3568 SH_PFC_PIN_GROUP(drif0_data1_a),
3569 SH_PFC_PIN_GROUP(drif0_ctrl_b),
3570 SH_PFC_PIN_GROUP(drif0_data0_b),
3571 SH_PFC_PIN_GROUP(drif0_data1_b),
3572 SH_PFC_PIN_GROUP(drif0_ctrl_c),
3573 SH_PFC_PIN_GROUP(drif0_data0_c),
3574 SH_PFC_PIN_GROUP(drif0_data1_c),
3575 SH_PFC_PIN_GROUP(drif1_ctrl_a),
3576 SH_PFC_PIN_GROUP(drif1_data0_a),
3577 SH_PFC_PIN_GROUP(drif1_data1_a),
3578 SH_PFC_PIN_GROUP(drif1_ctrl_b),
3579 SH_PFC_PIN_GROUP(drif1_data0_b),
3580 SH_PFC_PIN_GROUP(drif1_data1_b),
3581 SH_PFC_PIN_GROUP(drif1_ctrl_c),
3582 SH_PFC_PIN_GROUP(drif1_data0_c),
3583 SH_PFC_PIN_GROUP(drif1_data1_c),
3584 SH_PFC_PIN_GROUP(drif2_ctrl_a),
3585 SH_PFC_PIN_GROUP(drif2_data0_a),
3586 SH_PFC_PIN_GROUP(drif2_data1_a),
3587 SH_PFC_PIN_GROUP(drif2_ctrl_b),
3588 SH_PFC_PIN_GROUP(drif2_data0_b),
3589 SH_PFC_PIN_GROUP(drif2_data1_b),
3590 SH_PFC_PIN_GROUP(drif3_ctrl_a),
3591 SH_PFC_PIN_GROUP(drif3_data0_a),
3592 SH_PFC_PIN_GROUP(drif3_data1_a),
3593 SH_PFC_PIN_GROUP(drif3_ctrl_b),
3594 SH_PFC_PIN_GROUP(drif3_data0_b),
3595 SH_PFC_PIN_GROUP(drif3_data1_b),
3349 SH_PFC_PIN_GROUP(hscif0_data), 3596 SH_PFC_PIN_GROUP(hscif0_data),
3350 SH_PFC_PIN_GROUP(hscif0_clk), 3597 SH_PFC_PIN_GROUP(hscif0_clk),
3351 SH_PFC_PIN_GROUP(hscif0_ctrl), 3598 SH_PFC_PIN_GROUP(hscif0_ctrl),
@@ -3629,6 +3876,48 @@ static const char * const canfd1_groups[] = {
3629 "canfd1_data", 3876 "canfd1_data",
3630}; 3877};
3631 3878
3879static const char * const drif0_groups[] = {
3880 "drif0_ctrl_a",
3881 "drif0_data0_a",
3882 "drif0_data1_a",
3883 "drif0_ctrl_b",
3884 "drif0_data0_b",
3885 "drif0_data1_b",
3886 "drif0_ctrl_c",
3887 "drif0_data0_c",
3888 "drif0_data1_c",
3889};
3890
3891static const char * const drif1_groups[] = {
3892 "drif1_ctrl_a",
3893 "drif1_data0_a",
3894 "drif1_data1_a",
3895 "drif1_ctrl_b",
3896 "drif1_data0_b",
3897 "drif1_data1_b",
3898 "drif1_ctrl_c",
3899 "drif1_data0_c",
3900 "drif1_data1_c",
3901};
3902
3903static const char * const drif2_groups[] = {
3904 "drif2_ctrl_a",
3905 "drif2_data0_a",
3906 "drif2_data1_a",
3907 "drif2_ctrl_b",
3908 "drif2_data0_b",
3909 "drif2_data1_b",
3910};
3911
3912static const char * const drif3_groups[] = {
3913 "drif3_ctrl_a",
3914 "drif3_data0_a",
3915 "drif3_data1_a",
3916 "drif3_ctrl_b",
3917 "drif3_data0_b",
3918 "drif3_data1_b",
3919};
3920
3632static const char * const hscif0_groups[] = { 3921static const char * const hscif0_groups[] = {
3633 "hscif0_data", 3922 "hscif0_data",
3634 "hscif0_clk", 3923 "hscif0_clk",
@@ -3972,6 +4261,10 @@ static const struct sh_pfc_function pinmux_functions[] = {
3972 SH_PFC_FUNCTION(can_clk), 4261 SH_PFC_FUNCTION(can_clk),
3973 SH_PFC_FUNCTION(canfd0), 4262 SH_PFC_FUNCTION(canfd0),
3974 SH_PFC_FUNCTION(canfd1), 4263 SH_PFC_FUNCTION(canfd1),
4264 SH_PFC_FUNCTION(drif0),
4265 SH_PFC_FUNCTION(drif1),
4266 SH_PFC_FUNCTION(drif2),
4267 SH_PFC_FUNCTION(drif3),
3975 SH_PFC_FUNCTION(hscif0), 4268 SH_PFC_FUNCTION(hscif0),
3976 SH_PFC_FUNCTION(hscif1), 4269 SH_PFC_FUNCTION(hscif1),
3977 SH_PFC_FUNCTION(hscif2), 4270 SH_PFC_FUNCTION(hscif2),
@@ -4765,8 +5058,28 @@ static const struct pinmux_drive_reg pinmux_drive_regs[] = {
4765 { }, 5058 { },
4766}; 5059};
4767 5060
5061static int r8a7795_pin_to_pocctrl(struct sh_pfc *pfc, unsigned int pin, u32 *pocctrl)
5062{
5063 int bit = -EINVAL;
5064
5065 *pocctrl = 0xe6060380;
5066
5067 if (pin >= RCAR_GP_PIN(3, 0) && pin <= RCAR_GP_PIN(3, 11))
5068 bit = pin & 0x1f;
5069
5070 if (pin >= RCAR_GP_PIN(4, 0) && pin <= RCAR_GP_PIN(4, 17))
5071 bit = (pin & 0x1f) + 12;
5072
5073 return bit;
5074}
5075
5076static const struct sh_pfc_soc_operations r8a7795_pinmux_ops = {
5077 .pin_to_pocctrl = r8a7795_pin_to_pocctrl,
5078};
5079
4768const struct sh_pfc_soc_info r8a7795_pinmux_info = { 5080const struct sh_pfc_soc_info r8a7795_pinmux_info = {
4769 .name = "r8a77950_pfc", 5081 .name = "r8a77950_pfc",
5082 .ops = &r8a7795_pinmux_ops,
4770 .unlock_reg = 0xe6060000, /* PMMR */ 5083 .unlock_reg = 0xe6060000, /* PMMR */
4771 5084
4772 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END }, 5085 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
diff --git a/drivers/pinctrl/sh-pfc/pfc-sh7757.c b/drivers/pinctrl/sh-pfc/pfc-sh7757.c
index 0555a1fe076e..6d8c31caefc1 100644
--- a/drivers/pinctrl/sh-pfc/pfc-sh7757.c
+++ b/drivers/pinctrl/sh-pfc/pfc-sh7757.c
@@ -1625,7 +1625,6 @@ static const struct pinmux_func pinmux_func_gpios[] = {
1625 GPIO_FN(VBIOS_CS), 1625 GPIO_FN(VBIOS_CS),
1626 1626
1627 /* PTW (mobule: LBSC, EVC, SCIF) */ 1627 /* PTW (mobule: LBSC, EVC, SCIF) */
1628 GPIO_FN(A16),
1629 GPIO_FN(A15), 1628 GPIO_FN(A15),
1630 GPIO_FN(A14), 1629 GPIO_FN(A14),
1631 GPIO_FN(A13), 1630 GPIO_FN(A13),
diff --git a/drivers/pinctrl/sh-pfc/pinctrl.c b/drivers/pinctrl/sh-pfc/pinctrl.c
index fdb445d68b9a..e208ee04a9f4 100644
--- a/drivers/pinctrl/sh-pfc/pinctrl.c
+++ b/drivers/pinctrl/sh-pfc/pinctrl.c
@@ -632,19 +632,21 @@ static int sh_pfc_pinconf_get(struct pinctrl_dev *pctldev, unsigned _pin,
632 } 632 }
633 633
634 case PIN_CONFIG_POWER_SOURCE: { 634 case PIN_CONFIG_POWER_SOURCE: {
635 int ret; 635 u32 pocctrl, val;
636 int bit;
636 637
637 if (!pfc->info->ops || !pfc->info->ops->get_io_voltage) 638 if (!pfc->info->ops || !pfc->info->ops->pin_to_pocctrl)
638 return -ENOTSUPP; 639 return -ENOTSUPP;
639 640
641 bit = pfc->info->ops->pin_to_pocctrl(pfc, _pin, &pocctrl);
642 if (WARN(bit < 0, "invalid pin %#x", _pin))
643 return bit;
644
640 spin_lock_irqsave(&pfc->lock, flags); 645 spin_lock_irqsave(&pfc->lock, flags);
641 ret = pfc->info->ops->get_io_voltage(pfc, _pin); 646 val = sh_pfc_read_reg(pfc, pocctrl, 32);
642 spin_unlock_irqrestore(&pfc->lock, flags); 647 spin_unlock_irqrestore(&pfc->lock, flags);
643 648
644 if (ret < 0) 649 *config = (val & BIT(bit)) ? 3300 : 1800;
645 return ret;
646
647 *config = ret;
648 break; 650 break;
649 } 651 }
650 652
@@ -696,20 +698,29 @@ static int sh_pfc_pinconf_set(struct pinctrl_dev *pctldev, unsigned _pin,
696 } 698 }
697 699
698 case PIN_CONFIG_POWER_SOURCE: { 700 case PIN_CONFIG_POWER_SOURCE: {
699 unsigned int arg = 701 unsigned int mV = pinconf_to_config_argument(configs[i]);
700 pinconf_to_config_argument(configs[i]); 702 u32 pocctrl, val;
701 int ret; 703 int bit;
702 704
703 if (!pfc->info->ops || !pfc->info->ops->set_io_voltage) 705 if (!pfc->info->ops || !pfc->info->ops->pin_to_pocctrl)
704 return -ENOTSUPP; 706 return -ENOTSUPP;
705 707
708 bit = pfc->info->ops->pin_to_pocctrl(pfc, _pin, &pocctrl);
709 if (WARN(bit < 0, "invalid pin %#x", _pin))
710 return bit;
711
712 if (mV != 1800 && mV != 3300)
713 return -EINVAL;
714
706 spin_lock_irqsave(&pfc->lock, flags); 715 spin_lock_irqsave(&pfc->lock, flags);
707 ret = pfc->info->ops->set_io_voltage(pfc, _pin, arg); 716 val = sh_pfc_read_reg(pfc, pocctrl, 32);
717 if (mV == 3300)
718 val |= BIT(bit);
719 else
720 val &= ~BIT(bit);
721 sh_pfc_write_reg(pfc, pocctrl, 32, val);
708 spin_unlock_irqrestore(&pfc->lock, flags); 722 spin_unlock_irqrestore(&pfc->lock, flags);
709 723
710 if (ret)
711 return ret;
712
713 break; 724 break;
714 } 725 }
715 726
@@ -803,8 +814,5 @@ int sh_pfc_register_pinctrl(struct sh_pfc *pfc)
803 pmx->pctl_desc.npins = pfc->info->nr_pins; 814 pmx->pctl_desc.npins = pfc->info->nr_pins;
804 815
805 pmx->pctl = devm_pinctrl_register(pfc->dev, &pmx->pctl_desc, pmx); 816 pmx->pctl = devm_pinctrl_register(pfc->dev, &pmx->pctl_desc, pmx);
806 if (IS_ERR(pmx->pctl)) 817 return PTR_ERR_OR_ZERO(pmx->pctl);
807 return PTR_ERR(pmx->pctl);
808
809 return 0;
810} 818}
diff --git a/drivers/pinctrl/sh-pfc/sh_pfc.h b/drivers/pinctrl/sh-pfc/sh_pfc.h
index 656ea32f776c..5e966c09434d 100644
--- a/drivers/pinctrl/sh-pfc/sh_pfc.h
+++ b/drivers/pinctrl/sh-pfc/sh_pfc.h
@@ -13,6 +13,7 @@
13 13
14#include <linux/bug.h> 14#include <linux/bug.h>
15#include <linux/pinctrl/pinconf-generic.h> 15#include <linux/pinctrl/pinconf-generic.h>
16#include <linux/spinlock.h>
16#include <linux/stringify.h> 17#include <linux/stringify.h>
17 18
18enum { 19enum {
@@ -182,16 +183,38 @@ struct pinmux_range {
182 u16 force; 183 u16 force;
183}; 184};
184 185
185struct sh_pfc; 186struct sh_pfc_window {
187 phys_addr_t phys;
188 void __iomem *virt;
189 unsigned long size;
190};
191
192struct sh_pfc_pin_range;
193
194struct sh_pfc {
195 struct device *dev;
196 const struct sh_pfc_soc_info *info;
197 spinlock_t lock;
198
199 unsigned int num_windows;
200 struct sh_pfc_window *windows;
201 unsigned int num_irqs;
202 unsigned int *irqs;
203
204 struct sh_pfc_pin_range *ranges;
205 unsigned int nr_ranges;
206
207 unsigned int nr_gpio_pins;
208
209 struct sh_pfc_chip *gpio;
210};
186 211
187struct sh_pfc_soc_operations { 212struct sh_pfc_soc_operations {
188 int (*init)(struct sh_pfc *pfc); 213 int (*init)(struct sh_pfc *pfc);
189 unsigned int (*get_bias)(struct sh_pfc *pfc, unsigned int pin); 214 unsigned int (*get_bias)(struct sh_pfc *pfc, unsigned int pin);
190 void (*set_bias)(struct sh_pfc *pfc, unsigned int pin, 215 void (*set_bias)(struct sh_pfc *pfc, unsigned int pin,
191 unsigned int bias); 216 unsigned int bias);
192 int (*get_io_voltage)(struct sh_pfc *pfc, unsigned int pin); 217 int (*pin_to_pocctrl)(struct sh_pfc *pfc, unsigned int pin, u32 *pocctrl);
193 int (*set_io_voltage)(struct sh_pfc *pfc, unsigned int pin,
194 u16 voltage_mV);
195}; 218};
196 219
197struct sh_pfc_soc_info { 220struct sh_pfc_soc_info {
@@ -227,6 +250,30 @@ struct sh_pfc_soc_info {
227 u32 unlock_reg; 250 u32 unlock_reg;
228}; 251};
229 252
253extern const struct sh_pfc_soc_info emev2_pinmux_info;
254extern const struct sh_pfc_soc_info r8a73a4_pinmux_info;
255extern const struct sh_pfc_soc_info r8a7740_pinmux_info;
256extern const struct sh_pfc_soc_info r8a7778_pinmux_info;
257extern const struct sh_pfc_soc_info r8a7779_pinmux_info;
258extern const struct sh_pfc_soc_info r8a7790_pinmux_info;
259extern const struct sh_pfc_soc_info r8a7791_pinmux_info;
260extern const struct sh_pfc_soc_info r8a7793_pinmux_info;
261extern const struct sh_pfc_soc_info r8a7794_pinmux_info;
262extern const struct sh_pfc_soc_info r8a7795_pinmux_info;
263extern const struct sh_pfc_soc_info sh7203_pinmux_info;
264extern const struct sh_pfc_soc_info sh7264_pinmux_info;
265extern const struct sh_pfc_soc_info sh7269_pinmux_info;
266extern const struct sh_pfc_soc_info sh73a0_pinmux_info;
267extern const struct sh_pfc_soc_info sh7720_pinmux_info;
268extern const struct sh_pfc_soc_info sh7722_pinmux_info;
269extern const struct sh_pfc_soc_info sh7723_pinmux_info;
270extern const struct sh_pfc_soc_info sh7724_pinmux_info;
271extern const struct sh_pfc_soc_info sh7734_pinmux_info;
272extern const struct sh_pfc_soc_info sh7757_pinmux_info;
273extern const struct sh_pfc_soc_info sh7785_pinmux_info;
274extern const struct sh_pfc_soc_info sh7786_pinmux_info;
275extern const struct sh_pfc_soc_info shx3_pinmux_info;
276
230/* ----------------------------------------------------------------------------- 277/* -----------------------------------------------------------------------------
231 * Helper macros to create pin and port lists 278 * Helper macros to create pin and port lists
232 */ 279 */
diff --git a/drivers/pinctrl/sirf/pinctrl-atlas7.c b/drivers/pinctrl/sirf/pinctrl-atlas7.c
index 168c0f5d4079..19952f73fa8c 100644
--- a/drivers/pinctrl/sirf/pinctrl-atlas7.c
+++ b/drivers/pinctrl/sirf/pinctrl-atlas7.c
@@ -5424,8 +5424,10 @@ static int atlas7_pinmux_probe(struct platform_device *pdev)
5424 if (ret) 5424 if (ret)
5425 return ret; 5425 return ret;
5426 pmx->sys2pci_base = devm_ioremap_resource(&pdev->dev, &res); 5426 pmx->sys2pci_base = devm_ioremap_resource(&pdev->dev, &res);
5427 if (IS_ERR(pmx->sys2pci_base)) 5427 if (IS_ERR(pmx->sys2pci_base)) {
5428 of_node_put(sys2pci_np);
5428 return -ENOMEM; 5429 return -ENOMEM;
5430 }
5429 5431
5430 pmx->dev = &pdev->dev; 5432 pmx->dev = &pdev->dev;
5431 5433
diff --git a/drivers/pinctrl/stm32/Kconfig b/drivers/pinctrl/stm32/Kconfig
index 0f28841b2332..4c40dae384d1 100644
--- a/drivers/pinctrl/stm32/Kconfig
+++ b/drivers/pinctrl/stm32/Kconfig
@@ -13,4 +13,10 @@ config PINCTRL_STM32F429
13 default MACH_STM32F429 13 default MACH_STM32F429
14 select PINCTRL_STM32 14 select PINCTRL_STM32
15 15
16config PINCTRL_STM32F746
17 bool "STMicroelectronics STM32F746 pin control" if COMPILE_TEST && !MACH_STM32F746
18 depends on OF
19 default MACH_STM32F746
20 select PINCTRL_STM32
21
16endif 22endif
diff --git a/drivers/pinctrl/stm32/Makefile b/drivers/pinctrl/stm32/Makefile
index fc17d4238845..4a1ee748441f 100644
--- a/drivers/pinctrl/stm32/Makefile
+++ b/drivers/pinctrl/stm32/Makefile
@@ -3,3 +3,4 @@ obj-$(CONFIG_PINCTRL_STM32) += pinctrl-stm32.o
3 3
4# SoC Drivers 4# SoC Drivers
5obj-$(CONFIG_PINCTRL_STM32F429) += pinctrl-stm32f429.o 5obj-$(CONFIG_PINCTRL_STM32F429) += pinctrl-stm32f429.o
6obj-$(CONFIG_PINCTRL_STM32F746) += pinctrl-stm32f746.o
diff --git a/drivers/pinctrl/stm32/pinctrl-stm32.c b/drivers/pinctrl/stm32/pinctrl-stm32.c
index ae9fab82a1b9..4ae596bf19b5 100644
--- a/drivers/pinctrl/stm32/pinctrl-stm32.c
+++ b/drivers/pinctrl/stm32/pinctrl-stm32.c
@@ -638,8 +638,8 @@ static u32 stm32_pconf_get_bias(struct stm32_gpio_bank *bank,
638 return (val >> (offset * 2)); 638 return (val >> (offset * 2));
639} 639}
640 640
641static bool stm32_pconf_input_get(struct stm32_gpio_bank *bank, 641static bool stm32_pconf_get(struct stm32_gpio_bank *bank,
642 unsigned int offset) 642 unsigned int offset, bool dir)
643{ 643{
644 unsigned long flags; 644 unsigned long flags;
645 u32 val; 645 u32 val;
@@ -647,23 +647,12 @@ static bool stm32_pconf_input_get(struct stm32_gpio_bank *bank,
647 clk_enable(bank->clk); 647 clk_enable(bank->clk);
648 spin_lock_irqsave(&bank->lock, flags); 648 spin_lock_irqsave(&bank->lock, flags);
649 649
650 val = !!(readl_relaxed(bank->base + STM32_GPIO_IDR) & BIT(offset)); 650 if (dir)
651 651 val = !!(readl_relaxed(bank->base + STM32_GPIO_IDR) &
652 spin_unlock_irqrestore(&bank->lock, flags); 652 BIT(offset));
653 clk_disable(bank->clk); 653 else
654 654 val = !!(readl_relaxed(bank->base + STM32_GPIO_ODR) &
655 return val; 655 BIT(offset));
656}
657
658static bool stm32_pconf_output_get(struct stm32_gpio_bank *bank,
659 unsigned int offset)
660{
661 unsigned long flags;
662 u32 val;
663
664 clk_enable(bank->clk);
665 spin_lock_irqsave(&bank->lock, flags);
666 val = !!(readl_relaxed(bank->base + STM32_GPIO_ODR) & BIT(offset));
667 656
668 spin_unlock_irqrestore(&bank->lock, flags); 657 spin_unlock_irqrestore(&bank->lock, flags);
669 clk_disable(bank->clk); 658 clk_disable(bank->clk);
@@ -772,7 +761,7 @@ static void stm32_pconf_dbg_show(struct pinctrl_dev *pctldev,
772 switch (mode) { 761 switch (mode) {
773 /* input */ 762 /* input */
774 case 0: 763 case 0:
775 val = stm32_pconf_input_get(bank, offset); 764 val = stm32_pconf_get(bank, offset, true);
776 seq_printf(s, "- %s - %s", 765 seq_printf(s, "- %s - %s",
777 val ? "high" : "low", 766 val ? "high" : "low",
778 biasing[bias]); 767 biasing[bias]);
@@ -782,7 +771,7 @@ static void stm32_pconf_dbg_show(struct pinctrl_dev *pctldev,
782 case 1: 771 case 1:
783 drive = stm32_pconf_get_driving(bank, offset); 772 drive = stm32_pconf_get_driving(bank, offset);
784 speed = stm32_pconf_get_speed(bank, offset); 773 speed = stm32_pconf_get_speed(bank, offset);
785 val = stm32_pconf_output_get(bank, offset); 774 val = stm32_pconf_get(bank, offset, false);
786 seq_printf(s, "- %s - %s - %s - %s %s", 775 seq_printf(s, "- %s - %s - %s - %s %s",
787 val ? "high" : "low", 776 val ? "high" : "low",
788 drive ? "open drain" : "push pull", 777 drive ? "open drain" : "push pull",
diff --git a/drivers/pinctrl/stm32/pinctrl-stm32f746.c b/drivers/pinctrl/stm32/pinctrl-stm32f746.c
new file mode 100644
index 000000000000..c0b4462ce97e
--- /dev/null
+++ b/drivers/pinctrl/stm32/pinctrl-stm32f746.c
@@ -0,0 +1,1681 @@
1/*
2 * Copyright (C) Maxime Coquelin 2015
3 * Author: Maxime Coquelin <mcoquelin.stm32@gmail.com>
4 * License terms: GNU General Public License (GPL), version 2
5 */
6#include <linux/init.h>
7#include <linux/of.h>
8#include <linux/platform_device.h>
9
10#include "pinctrl-stm32.h"
11
12static const struct stm32_desc_pin stm32f746_pins[] = {
13 STM32_PIN(
14 PINCTRL_PIN(0, "PA0"),
15 STM32_FUNCTION(0, "GPIOA0"),
16 STM32_FUNCTION(2, "TIM2_CH1 TIM2_ETR"),
17 STM32_FUNCTION(3, "TIM5_CH1"),
18 STM32_FUNCTION(4, "TIM8_ETR"),
19 STM32_FUNCTION(8, "USART2_CTS"),
20 STM32_FUNCTION(9, "UART4_TX"),
21 STM32_FUNCTION(11, "SAI2_SD_B"),
22 STM32_FUNCTION(12, "ETH_MII_CRS"),
23 STM32_FUNCTION(16, "EVENTOUT"),
24 STM32_FUNCTION(17, "ANALOG")
25 ),
26 STM32_PIN(
27 PINCTRL_PIN(1, "PA1"),
28 STM32_FUNCTION(0, "GPIOA1"),
29 STM32_FUNCTION(2, "TIM2_CH2"),
30 STM32_FUNCTION(3, "TIM5_CH2"),
31 STM32_FUNCTION(8, "USART2_RTS"),
32 STM32_FUNCTION(9, "UART4_RX"),
33 STM32_FUNCTION(10, "QUADSPI_BK1_IO3"),
34 STM32_FUNCTION(11, "SAI2_MCLK_B"),
35 STM32_FUNCTION(12, "ETH_MII_RX_CLK ETH_RMII_REF_CLK"),
36 STM32_FUNCTION(15, "LCD_R2"),
37 STM32_FUNCTION(16, "EVENTOUT"),
38 STM32_FUNCTION(17, "ANALOG")
39 ),
40 STM32_PIN(
41 PINCTRL_PIN(2, "PA2"),
42 STM32_FUNCTION(0, "GPIOA2"),
43 STM32_FUNCTION(2, "TIM2_CH3"),
44 STM32_FUNCTION(3, "TIM5_CH3"),
45 STM32_FUNCTION(4, "TIM9_CH1"),
46 STM32_FUNCTION(8, "USART2_TX"),
47 STM32_FUNCTION(9, "SAI2_SCK_B"),
48 STM32_FUNCTION(12, "ETH_MDIO"),
49 STM32_FUNCTION(15, "LCD_R1"),
50 STM32_FUNCTION(16, "EVENTOUT"),
51 STM32_FUNCTION(17, "ANALOG")
52 ),
53 STM32_PIN(
54 PINCTRL_PIN(3, "PA3"),
55 STM32_FUNCTION(0, "GPIOA3"),
56 STM32_FUNCTION(2, "TIM2_CH4"),
57 STM32_FUNCTION(3, "TIM5_CH4"),
58 STM32_FUNCTION(4, "TIM9_CH2"),
59 STM32_FUNCTION(8, "USART2_RX"),
60 STM32_FUNCTION(11, "OTG_HS_ULPI_D0"),
61 STM32_FUNCTION(12, "ETH_MII_COL"),
62 STM32_FUNCTION(15, "LCD_B5"),
63 STM32_FUNCTION(16, "EVENTOUT"),
64 STM32_FUNCTION(17, "ANALOG")
65 ),
66 STM32_PIN(
67 PINCTRL_PIN(4, "PA4"),
68 STM32_FUNCTION(0, "GPIOA4"),
69 STM32_FUNCTION(6, "SPI1_NSS I2S1_WS"),
70 STM32_FUNCTION(7, "SPI3_NSS I2S3_WS"),
71 STM32_FUNCTION(8, "USART2_CK"),
72 STM32_FUNCTION(13, "OTG_HS_SOF"),
73 STM32_FUNCTION(14, "DCMI_HSYNC"),
74 STM32_FUNCTION(15, "LCD_VSYNC"),
75 STM32_FUNCTION(16, "EVENTOUT"),
76 STM32_FUNCTION(17, "ANALOG")
77 ),
78 STM32_PIN(
79 PINCTRL_PIN(5, "PA5"),
80 STM32_FUNCTION(0, "GPIOA5"),
81 STM32_FUNCTION(2, "TIM2_CH1 TIM2_ETR"),
82 STM32_FUNCTION(4, "TIM8_CH1N"),
83 STM32_FUNCTION(6, "SPI1_SCK I2S1_CK"),
84 STM32_FUNCTION(11, "OTG_HS_ULPI_CK"),
85 STM32_FUNCTION(15, "LCD_R4"),
86 STM32_FUNCTION(16, "EVENTOUT"),
87 STM32_FUNCTION(17, "ANALOG")
88 ),
89 STM32_PIN(
90 PINCTRL_PIN(6, "PA6"),
91 STM32_FUNCTION(0, "GPIOA6"),
92 STM32_FUNCTION(2, "TIM1_BKIN"),
93 STM32_FUNCTION(3, "TIM3_CH1"),
94 STM32_FUNCTION(4, "TIM8_BKIN"),
95 STM32_FUNCTION(6, "SPI1_MISO"),
96 STM32_FUNCTION(10, "TIM13_CH1"),
97 STM32_FUNCTION(14, "DCMI_PIXCLK"),
98 STM32_FUNCTION(15, "LCD_G2"),
99 STM32_FUNCTION(16, "EVENTOUT"),
100 STM32_FUNCTION(17, "ANALOG")
101 ),
102 STM32_PIN(
103 PINCTRL_PIN(7, "PA7"),
104 STM32_FUNCTION(0, "GPIOA7"),
105 STM32_FUNCTION(2, "TIM1_CH1N"),
106 STM32_FUNCTION(3, "TIM3_CH2"),
107 STM32_FUNCTION(4, "TIM8_CH1N"),
108 STM32_FUNCTION(6, "SPI1_MOSI I2S1_SD"),
109 STM32_FUNCTION(10, "TIM14_CH1"),
110 STM32_FUNCTION(12, "ETH_MII_RX_DV ETH_RMII_CRS_DV"),
111 STM32_FUNCTION(13, "FMC_SDNWE"),
112 STM32_FUNCTION(16, "EVENTOUT"),
113 STM32_FUNCTION(17, "ANALOG")
114 ),
115 STM32_PIN(
116 PINCTRL_PIN(8, "PA8"),
117 STM32_FUNCTION(0, "GPIOA8"),
118 STM32_FUNCTION(1, "MCO1"),
119 STM32_FUNCTION(2, "TIM1_CH1"),
120 STM32_FUNCTION(4, "TIM8_BKIN2"),
121 STM32_FUNCTION(5, "I2C3_SCL"),
122 STM32_FUNCTION(8, "USART1_CK"),
123 STM32_FUNCTION(11, "OTG_FS_SOF"),
124 STM32_FUNCTION(15, "LCD_R6"),
125 STM32_FUNCTION(16, "EVENTOUT"),
126 STM32_FUNCTION(17, "ANALOG")
127 ),
128 STM32_PIN(
129 PINCTRL_PIN(9, "PA9"),
130 STM32_FUNCTION(0, "GPIOA9"),
131 STM32_FUNCTION(2, "TIM1_CH2"),
132 STM32_FUNCTION(5, "I2C3_SMBA"),
133 STM32_FUNCTION(6, "SPI2_SCK I2S2_CK"),
134 STM32_FUNCTION(8, "USART1_TX"),
135 STM32_FUNCTION(14, "DCMI_D0"),
136 STM32_FUNCTION(16, "EVENTOUT"),
137 STM32_FUNCTION(17, "ANALOG")
138 ),
139 STM32_PIN(
140 PINCTRL_PIN(10, "PA10"),
141 STM32_FUNCTION(0, "GPIOA10"),
142 STM32_FUNCTION(2, "TIM1_CH3"),
143 STM32_FUNCTION(8, "USART1_RX"),
144 STM32_FUNCTION(11, "OTG_FS_ID"),
145 STM32_FUNCTION(14, "DCMI_D1"),
146 STM32_FUNCTION(16, "EVENTOUT"),
147 STM32_FUNCTION(17, "ANALOG")
148 ),
149 STM32_PIN(
150 PINCTRL_PIN(11, "PA11"),
151 STM32_FUNCTION(0, "GPIOA11"),
152 STM32_FUNCTION(2, "TIM1_CH4"),
153 STM32_FUNCTION(8, "USART1_CTS"),
154 STM32_FUNCTION(10, "CAN1_RX"),
155 STM32_FUNCTION(11, "OTG_FS_DM"),
156 STM32_FUNCTION(15, "LCD_R4"),
157 STM32_FUNCTION(16, "EVENTOUT"),
158 STM32_FUNCTION(17, "ANALOG")
159 ),
160 STM32_PIN(
161 PINCTRL_PIN(12, "PA12"),
162 STM32_FUNCTION(0, "GPIOA12"),
163 STM32_FUNCTION(2, "TIM1_ETR"),
164 STM32_FUNCTION(8, "USART1_RTS"),
165 STM32_FUNCTION(9, "SAI2_FS_B"),
166 STM32_FUNCTION(10, "CAN1_TX"),
167 STM32_FUNCTION(11, "OTG_FS_DP"),
168 STM32_FUNCTION(15, "LCD_R5"),
169 STM32_FUNCTION(16, "EVENTOUT"),
170 STM32_FUNCTION(17, "ANALOG")
171 ),
172 STM32_PIN(
173 PINCTRL_PIN(13, "PA13"),
174 STM32_FUNCTION(0, "GPIOA13"),
175 STM32_FUNCTION(1, "JTMS SWDIO"),
176 STM32_FUNCTION(16, "EVENTOUT"),
177 STM32_FUNCTION(17, "ANALOG")
178 ),
179 STM32_PIN(
180 PINCTRL_PIN(14, "PA14"),
181 STM32_FUNCTION(0, "GPIOA14"),
182 STM32_FUNCTION(1, "JTCK SWCLK"),
183 STM32_FUNCTION(16, "EVENTOUT"),
184 STM32_FUNCTION(17, "ANALOG")
185 ),
186 STM32_PIN(
187 PINCTRL_PIN(15, "PA15"),
188 STM32_FUNCTION(0, "GPIOA15"),
189 STM32_FUNCTION(1, "JTDI"),
190 STM32_FUNCTION(2, "TIM2_CH1 TIM2_ETR"),
191 STM32_FUNCTION(5, "HDMI_CEC"),
192 STM32_FUNCTION(6, "SPI1_NSS I2S1_WS"),
193 STM32_FUNCTION(7, "SPI3_NSS I2S3_WS"),
194 STM32_FUNCTION(9, "UART4_RTS"),
195 STM32_FUNCTION(16, "EVENTOUT"),
196 STM32_FUNCTION(17, "ANALOG")
197 ),
198 STM32_PIN(
199 PINCTRL_PIN(16, "PB0"),
200 STM32_FUNCTION(0, "GPIOB0"),
201 STM32_FUNCTION(2, "TIM1_CH2N"),
202 STM32_FUNCTION(3, "TIM3_CH3"),
203 STM32_FUNCTION(4, "TIM8_CH2N"),
204 STM32_FUNCTION(9, "UART4_CTS"),
205 STM32_FUNCTION(10, "LCD_R3"),
206 STM32_FUNCTION(11, "OTG_HS_ULPI_D1"),
207 STM32_FUNCTION(12, "ETH_MII_RXD2"),
208 STM32_FUNCTION(16, "EVENTOUT"),
209 STM32_FUNCTION(17, "ANALOG")
210 ),
211 STM32_PIN(
212 PINCTRL_PIN(17, "PB1"),
213 STM32_FUNCTION(0, "GPIOB1"),
214 STM32_FUNCTION(2, "TIM1_CH3N"),
215 STM32_FUNCTION(3, "TIM3_CH4"),
216 STM32_FUNCTION(4, "TIM8_CH3N"),
217 STM32_FUNCTION(10, "LCD_R6"),
218 STM32_FUNCTION(11, "OTG_HS_ULPI_D2"),
219 STM32_FUNCTION(12, "ETH_MII_RXD3"),
220 STM32_FUNCTION(16, "EVENTOUT"),
221 STM32_FUNCTION(17, "ANALOG")
222 ),
223 STM32_PIN(
224 PINCTRL_PIN(18, "PB2"),
225 STM32_FUNCTION(0, "GPIOB2"),
226 STM32_FUNCTION(7, "SAI1_SD_A"),
227 STM32_FUNCTION(8, "SPI3_MOSI I2S3_SD"),
228 STM32_FUNCTION(10, "QUADSPI_CLK"),
229 STM32_FUNCTION(16, "EVENTOUT"),
230 STM32_FUNCTION(17, "ANALOG")
231 ),
232 STM32_PIN(
233 PINCTRL_PIN(19, "PB3"),
234 STM32_FUNCTION(0, "GPIOB3"),
235 STM32_FUNCTION(1, "JTDO TRACESWO"),
236 STM32_FUNCTION(2, "TIM2_CH2"),
237 STM32_FUNCTION(6, "SPI1_SCK I2S1_CK"),
238 STM32_FUNCTION(7, "SPI3_SCK I2S3_CK"),
239 STM32_FUNCTION(16, "EVENTOUT"),
240 STM32_FUNCTION(17, "ANALOG")
241 ),
242 STM32_PIN(
243 PINCTRL_PIN(20, "PB4"),
244 STM32_FUNCTION(0, "GPIOB4"),
245 STM32_FUNCTION(1, "NJTRST"),
246 STM32_FUNCTION(3, "TIM3_CH1"),
247 STM32_FUNCTION(6, "SPI1_MISO"),
248 STM32_FUNCTION(7, "SPI3_MISO"),
249 STM32_FUNCTION(8, "SPI2_NSS I2S2_WS"),
250 STM32_FUNCTION(16, "EVENTOUT"),
251 STM32_FUNCTION(17, "ANALOG")
252 ),
253 STM32_PIN(
254 PINCTRL_PIN(21, "PB5"),
255 STM32_FUNCTION(0, "GPIOB5"),
256 STM32_FUNCTION(3, "TIM3_CH2"),
257 STM32_FUNCTION(5, "I2C1_SMBA"),
258 STM32_FUNCTION(6, "SPI1_MOSI I2S1_SD"),
259 STM32_FUNCTION(7, "SPI3_MOSI I2S3_SD"),
260 STM32_FUNCTION(10, "CAN2_RX"),
261 STM32_FUNCTION(11, "OTG_HS_ULPI_D7"),
262 STM32_FUNCTION(12, "ETH_PPS_OUT"),
263 STM32_FUNCTION(13, "FMC_SDCKE1"),
264 STM32_FUNCTION(14, "DCMI_D10"),
265 STM32_FUNCTION(16, "EVENTOUT"),
266 STM32_FUNCTION(17, "ANALOG")
267 ),
268 STM32_PIN(
269 PINCTRL_PIN(22, "PB6"),
270 STM32_FUNCTION(0, "GPIOB6"),
271 STM32_FUNCTION(3, "TIM4_CH1"),
272 STM32_FUNCTION(4, "HDMI_CEC"),
273 STM32_FUNCTION(5, "I2C1_SCL"),
274 STM32_FUNCTION(8, "USART1_TX"),
275 STM32_FUNCTION(10, "CAN2_TX"),
276 STM32_FUNCTION(11, "QUADSPI_BK1_NCS"),
277 STM32_FUNCTION(13, "FMC_SDNE1"),
278 STM32_FUNCTION(14, "DCMI_D5"),
279 STM32_FUNCTION(16, "EVENTOUT"),
280 STM32_FUNCTION(17, "ANALOG")
281 ),
282 STM32_PIN(
283 PINCTRL_PIN(23, "PB7"),
284 STM32_FUNCTION(0, "GPIOB7"),
285 STM32_FUNCTION(3, "TIM4_CH2"),
286 STM32_FUNCTION(5, "I2C1_SDA"),
287 STM32_FUNCTION(8, "USART1_RX"),
288 STM32_FUNCTION(13, "FMC_NL"),
289 STM32_FUNCTION(14, "DCMI_VSYNC"),
290 STM32_FUNCTION(16, "EVENTOUT"),
291 STM32_FUNCTION(17, "ANALOG")
292 ),
293 STM32_PIN(
294 PINCTRL_PIN(24, "PB8"),
295 STM32_FUNCTION(0, "GPIOB8"),
296 STM32_FUNCTION(3, "TIM4_CH3"),
297 STM32_FUNCTION(4, "TIM10_CH1"),
298 STM32_FUNCTION(5, "I2C1_SCL"),
299 STM32_FUNCTION(10, "CAN1_RX"),
300 STM32_FUNCTION(12, "ETH_MII_TXD3"),
301 STM32_FUNCTION(13, "SDMMC1_D4"),
302 STM32_FUNCTION(14, "DCMI_D6"),
303 STM32_FUNCTION(15, "LCD_B6"),
304 STM32_FUNCTION(16, "EVENTOUT"),
305 STM32_FUNCTION(17, "ANALOG")
306 ),
307 STM32_PIN(
308 PINCTRL_PIN(25, "PB9"),
309 STM32_FUNCTION(0, "GPIOB9"),
310 STM32_FUNCTION(3, "TIM4_CH4"),
311 STM32_FUNCTION(4, "TIM11_CH1"),
312 STM32_FUNCTION(5, "I2C1_SDA"),
313 STM32_FUNCTION(6, "SPI2_NSS I2S2_WS"),
314 STM32_FUNCTION(10, "CAN1_TX"),
315 STM32_FUNCTION(13, "SDMMC1_D5"),
316 STM32_FUNCTION(14, "DCMI_D7"),
317 STM32_FUNCTION(15, "LCD_B7"),
318 STM32_FUNCTION(16, "EVENTOUT"),
319 STM32_FUNCTION(17, "ANALOG")
320 ),
321 STM32_PIN(
322 PINCTRL_PIN(26, "PB10"),
323 STM32_FUNCTION(0, "GPIOB10"),
324 STM32_FUNCTION(2, "TIM2_CH3"),
325 STM32_FUNCTION(5, "I2C2_SCL"),
326 STM32_FUNCTION(6, "SPI2_SCK I2S2_CK"),
327 STM32_FUNCTION(8, "USART3_TX"),
328 STM32_FUNCTION(11, "OTG_HS_ULPI_D3"),
329 STM32_FUNCTION(12, "ETH_MII_RX_ER"),
330 STM32_FUNCTION(15, "LCD_G4"),
331 STM32_FUNCTION(16, "EVENTOUT"),
332 STM32_FUNCTION(17, "ANALOG")
333 ),
334 STM32_PIN(
335 PINCTRL_PIN(27, "PB11"),
336 STM32_FUNCTION(0, "GPIOB11"),
337 STM32_FUNCTION(2, "TIM2_CH4"),
338 STM32_FUNCTION(5, "I2C2_SDA"),
339 STM32_FUNCTION(8, "USART3_RX"),
340 STM32_FUNCTION(11, "OTG_HS_ULPI_D4"),
341 STM32_FUNCTION(12, "ETH_MII_TX_EN ETH_RMII_TX_EN"),
342 STM32_FUNCTION(15, "LCD_G5"),
343 STM32_FUNCTION(16, "EVENTOUT"),
344 STM32_FUNCTION(17, "ANALOG")
345 ),
346 STM32_PIN(
347 PINCTRL_PIN(28, "PB12"),
348 STM32_FUNCTION(0, "GPIOB12"),
349 STM32_FUNCTION(2, "TIM1_BKIN"),
350 STM32_FUNCTION(5, "I2C2_SMBA"),
351 STM32_FUNCTION(6, "SPI2_NSS I2S2_WS"),
352 STM32_FUNCTION(8, "USART3_CK"),
353 STM32_FUNCTION(10, "CAN2_RX"),
354 STM32_FUNCTION(11, "OTG_HS_ULPI_D5"),
355 STM32_FUNCTION(12, "ETH_MII_TXD0 ETH_RMII_TXD0"),
356 STM32_FUNCTION(13, "OTG_HS_ID"),
357 STM32_FUNCTION(16, "EVENTOUT"),
358 STM32_FUNCTION(17, "ANALOG")
359 ),
360 STM32_PIN(
361 PINCTRL_PIN(29, "PB13"),
362 STM32_FUNCTION(0, "GPIOB13"),
363 STM32_FUNCTION(2, "TIM1_CH1N"),
364 STM32_FUNCTION(6, "SPI2_SCK I2S2_CK"),
365 STM32_FUNCTION(8, "USART3_CTS"),
366 STM32_FUNCTION(10, "CAN2_TX"),
367 STM32_FUNCTION(11, "OTG_HS_ULPI_D6"),
368 STM32_FUNCTION(12, "ETH_MII_TXD1 ETH_RMII_TXD1"),
369 STM32_FUNCTION(16, "EVENTOUT"),
370 STM32_FUNCTION(17, "ANALOG")
371 ),
372 STM32_PIN(
373 PINCTRL_PIN(30, "PB14"),
374 STM32_FUNCTION(0, "GPIOB14"),
375 STM32_FUNCTION(2, "TIM1_CH2N"),
376 STM32_FUNCTION(4, "TIM8_CH2N"),
377 STM32_FUNCTION(6, "SPI2_MISO"),
378 STM32_FUNCTION(8, "USART3_RTS"),
379 STM32_FUNCTION(10, "TIM12_CH1"),
380 STM32_FUNCTION(13, "OTG_HS_DM"),
381 STM32_FUNCTION(16, "EVENTOUT"),
382 STM32_FUNCTION(17, "ANALOG")
383 ),
384 STM32_PIN(
385 PINCTRL_PIN(31, "PB15"),
386 STM32_FUNCTION(0, "GPIOB15"),
387 STM32_FUNCTION(1, "RTC_REFIN"),
388 STM32_FUNCTION(2, "TIM1_CH3N"),
389 STM32_FUNCTION(4, "TIM8_CH3N"),
390 STM32_FUNCTION(6, "SPI2_MOSI I2S2_SD"),
391 STM32_FUNCTION(10, "TIM12_CH2"),
392 STM32_FUNCTION(13, "OTG_HS_DP"),
393 STM32_FUNCTION(16, "EVENTOUT"),
394 STM32_FUNCTION(17, "ANALOG")
395 ),
396 STM32_PIN(
397 PINCTRL_PIN(32, "PC0"),
398 STM32_FUNCTION(0, "GPIOC0"),
399 STM32_FUNCTION(9, "SAI2_FS_B"),
400 STM32_FUNCTION(11, "OTG_HS_ULPI_STP"),
401 STM32_FUNCTION(13, "FMC_SDNWE"),
402 STM32_FUNCTION(15, "LCD_R5"),
403 STM32_FUNCTION(16, "EVENTOUT"),
404 STM32_FUNCTION(17, "ANALOG")
405 ),
406 STM32_PIN(
407 PINCTRL_PIN(33, "PC1"),
408 STM32_FUNCTION(0, "GPIOC1"),
409 STM32_FUNCTION(1, "TRACED0"),
410 STM32_FUNCTION(6, "SPI2_MOSI I2S2_SD"),
411 STM32_FUNCTION(7, "SAI1_SD_A"),
412 STM32_FUNCTION(12, "ETH_MDC"),
413 STM32_FUNCTION(16, "EVENTOUT"),
414 STM32_FUNCTION(17, "ANALOG")
415 ),
416 STM32_PIN(
417 PINCTRL_PIN(34, "PC2"),
418 STM32_FUNCTION(0, "GPIOC2"),
419 STM32_FUNCTION(6, "SPI2_MISO"),
420 STM32_FUNCTION(11, "OTG_HS_ULPI_DIR"),
421 STM32_FUNCTION(12, "ETH_MII_TXD2"),
422 STM32_FUNCTION(13, "FMC_SDNE0"),
423 STM32_FUNCTION(16, "EVENTOUT"),
424 STM32_FUNCTION(17, "ANALOG")
425 ),
426 STM32_PIN(
427 PINCTRL_PIN(35, "PC3"),
428 STM32_FUNCTION(0, "GPIOC3"),
429 STM32_FUNCTION(6, "SPI2_MOSI I2S2_SD"),
430 STM32_FUNCTION(11, "OTG_HS_ULPI_NXT"),
431 STM32_FUNCTION(12, "ETH_MII_TX_CLK"),
432 STM32_FUNCTION(13, "FMC_SDCKE0"),
433 STM32_FUNCTION(16, "EVENTOUT"),
434 STM32_FUNCTION(17, "ANALOG")
435 ),
436 STM32_PIN(
437 PINCTRL_PIN(36, "PC4"),
438 STM32_FUNCTION(0, "GPIOC4"),
439 STM32_FUNCTION(6, "I2S1_MCK"),
440 STM32_FUNCTION(9, "SPDIFRX_IN2"),
441 STM32_FUNCTION(12, "ETH_MII_RXD0 ETH_RMII_RXD0"),
442 STM32_FUNCTION(13, "FMC_SDNE0"),
443 STM32_FUNCTION(16, "EVENTOUT"),
444 STM32_FUNCTION(17, "ANALOG")
445 ),
446 STM32_PIN(
447 PINCTRL_PIN(37, "PC5"),
448 STM32_FUNCTION(0, "GPIOC5"),
449 STM32_FUNCTION(9, "SPDIFRX_IN3"),
450 STM32_FUNCTION(12, "ETH_MII_RXD1 ETH_RMII_RXD1"),
451 STM32_FUNCTION(13, "FMC_SDCKE0"),
452 STM32_FUNCTION(16, "EVENTOUT"),
453 STM32_FUNCTION(17, "ANALOG")
454 ),
455 STM32_PIN(
456 PINCTRL_PIN(38, "PC6"),
457 STM32_FUNCTION(0, "GPIOC6"),
458 STM32_FUNCTION(3, "TIM3_CH1"),
459 STM32_FUNCTION(4, "TIM8_CH1"),
460 STM32_FUNCTION(6, "I2S2_MCK"),
461 STM32_FUNCTION(9, "USART6_TX"),
462 STM32_FUNCTION(13, "SDMMC1_D6"),
463 STM32_FUNCTION(14, "DCMI_D0"),
464 STM32_FUNCTION(15, "LCD_HSYNC"),
465 STM32_FUNCTION(16, "EVENTOUT"),
466 STM32_FUNCTION(17, "ANALOG")
467 ),
468 STM32_PIN(
469 PINCTRL_PIN(39, "PC7"),
470 STM32_FUNCTION(0, "GPIOC7"),
471 STM32_FUNCTION(3, "TIM3_CH2"),
472 STM32_FUNCTION(4, "TIM8_CH2"),
473 STM32_FUNCTION(7, "I2S3_MCK"),
474 STM32_FUNCTION(9, "USART6_RX"),
475 STM32_FUNCTION(13, "SDMMC1_D7"),
476 STM32_FUNCTION(14, "DCMI_D1"),
477 STM32_FUNCTION(15, "LCD_G6"),
478 STM32_FUNCTION(16, "EVENTOUT"),
479 STM32_FUNCTION(17, "ANALOG")
480 ),
481 STM32_PIN(
482 PINCTRL_PIN(40, "PC8"),
483 STM32_FUNCTION(0, "GPIOC8"),
484 STM32_FUNCTION(1, "TRACED1"),
485 STM32_FUNCTION(3, "TIM3_CH3"),
486 STM32_FUNCTION(4, "TIM8_CH3"),
487 STM32_FUNCTION(8, "UART5_RTS"),
488 STM32_FUNCTION(9, "USART6_CK"),
489 STM32_FUNCTION(13, "SDMMC1_D0"),
490 STM32_FUNCTION(14, "DCMI_D2"),
491 STM32_FUNCTION(16, "EVENTOUT"),
492 STM32_FUNCTION(17, "ANALOG")
493 ),
494 STM32_PIN(
495 PINCTRL_PIN(41, "PC9"),
496 STM32_FUNCTION(0, "GPIOC9"),
497 STM32_FUNCTION(1, "MCO2"),
498 STM32_FUNCTION(3, "TIM3_CH4"),
499 STM32_FUNCTION(4, "TIM8_CH4"),
500 STM32_FUNCTION(5, "I2C3_SDA"),
501 STM32_FUNCTION(6, "I2S_CKIN"),
502 STM32_FUNCTION(8, "UART5_CTS"),
503 STM32_FUNCTION(10, "QUADSPI_BK1_IO0"),
504 STM32_FUNCTION(13, "SDMMC1_D1"),
505 STM32_FUNCTION(14, "DCMI_D3"),
506 STM32_FUNCTION(16, "EVENTOUT"),
507 STM32_FUNCTION(17, "ANALOG")
508 ),
509 STM32_PIN(
510 PINCTRL_PIN(42, "PC10"),
511 STM32_FUNCTION(0, "GPIOC10"),
512 STM32_FUNCTION(7, "SPI3_SCK I2S3_CK"),
513 STM32_FUNCTION(8, "USART3_TX"),
514 STM32_FUNCTION(9, "UART4_TX"),
515 STM32_FUNCTION(10, "QUADSPI_BK1_IO1"),
516 STM32_FUNCTION(13, "SDMMC1_D2"),
517 STM32_FUNCTION(14, "DCMI_D8"),
518 STM32_FUNCTION(15, "LCD_R2"),
519 STM32_FUNCTION(16, "EVENTOUT"),
520 STM32_FUNCTION(17, "ANALOG")
521 ),
522 STM32_PIN(
523 PINCTRL_PIN(43, "PC11"),
524 STM32_FUNCTION(0, "GPIOC11"),
525 STM32_FUNCTION(7, "SPI3_MISO"),
526 STM32_FUNCTION(8, "USART3_RX"),
527 STM32_FUNCTION(9, "UART4_RX"),
528 STM32_FUNCTION(10, "QUADSPI_BK2_NCS"),
529 STM32_FUNCTION(13, "SDMMC1_D3"),
530 STM32_FUNCTION(14, "DCMI_D4"),
531 STM32_FUNCTION(16, "EVENTOUT"),
532 STM32_FUNCTION(17, "ANALOG")
533 ),
534 STM32_PIN(
535 PINCTRL_PIN(44, "PC12"),
536 STM32_FUNCTION(0, "GPIOC12"),
537 STM32_FUNCTION(1, "TRACED3"),
538 STM32_FUNCTION(7, "SPI3_MOSI I2S3_SD"),
539 STM32_FUNCTION(8, "USART3_CK"),
540 STM32_FUNCTION(9, "UART5_TX"),
541 STM32_FUNCTION(13, "SDMMC1_CK"),
542 STM32_FUNCTION(14, "DCMI_D9"),
543 STM32_FUNCTION(16, "EVENTOUT"),
544 STM32_FUNCTION(17, "ANALOG")
545 ),
546 STM32_PIN(
547 PINCTRL_PIN(45, "PC13"),
548 STM32_FUNCTION(0, "GPIOC13"),
549 STM32_FUNCTION(16, "EVENTOUT"),
550 STM32_FUNCTION(17, "ANALOG")
551 ),
552 STM32_PIN(
553 PINCTRL_PIN(46, "PC14"),
554 STM32_FUNCTION(0, "GPIOC14"),
555 STM32_FUNCTION(16, "EVENTOUT"),
556 STM32_FUNCTION(17, "ANALOG")
557 ),
558 STM32_PIN(
559 PINCTRL_PIN(47, "PC15"),
560 STM32_FUNCTION(0, "GPIOC15"),
561 STM32_FUNCTION(16, "EVENTOUT"),
562 STM32_FUNCTION(17, "ANALOG")
563 ),
564 STM32_PIN(
565 PINCTRL_PIN(48, "PD0"),
566 STM32_FUNCTION(0, "GPIOD0"),
567 STM32_FUNCTION(10, "CAN1_RX"),
568 STM32_FUNCTION(13, "FMC_D2"),
569 STM32_FUNCTION(16, "EVENTOUT"),
570 STM32_FUNCTION(17, "ANALOG")
571 ),
572 STM32_PIN(
573 PINCTRL_PIN(49, "PD1"),
574 STM32_FUNCTION(0, "GPIOD1"),
575 STM32_FUNCTION(10, "CAN1_TX"),
576 STM32_FUNCTION(13, "FMC_D3"),
577 STM32_FUNCTION(16, "EVENTOUT"),
578 STM32_FUNCTION(17, "ANALOG")
579 ),
580 STM32_PIN(
581 PINCTRL_PIN(50, "PD2"),
582 STM32_FUNCTION(0, "GPIOD2"),
583 STM32_FUNCTION(1, "TRACED2"),
584 STM32_FUNCTION(3, "TIM3_ETR"),
585 STM32_FUNCTION(9, "UART5_RX"),
586 STM32_FUNCTION(13, "SDMMC1_CMD"),
587 STM32_FUNCTION(14, "DCMI_D11"),
588 STM32_FUNCTION(16, "EVENTOUT"),
589 STM32_FUNCTION(17, "ANALOG")
590 ),
591 STM32_PIN(
592 PINCTRL_PIN(51, "PD3"),
593 STM32_FUNCTION(0, "GPIOD3"),
594 STM32_FUNCTION(6, "SPI2_SCK I2S2_CK"),
595 STM32_FUNCTION(8, "USART2_CTS"),
596 STM32_FUNCTION(13, "FMC_CLK"),
597 STM32_FUNCTION(14, "DCMI_D5"),
598 STM32_FUNCTION(15, "LCD_G7"),
599 STM32_FUNCTION(16, "EVENTOUT"),
600 STM32_FUNCTION(17, "ANALOG")
601 ),
602 STM32_PIN(
603 PINCTRL_PIN(52, "PD4"),
604 STM32_FUNCTION(0, "GPIOD4"),
605 STM32_FUNCTION(8, "USART2_RTS"),
606 STM32_FUNCTION(13, "FMC_NOE"),
607 STM32_FUNCTION(16, "EVENTOUT"),
608 STM32_FUNCTION(17, "ANALOG")
609 ),
610 STM32_PIN(
611 PINCTRL_PIN(53, "PD5"),
612 STM32_FUNCTION(0, "GPIOD5"),
613 STM32_FUNCTION(8, "USART2_TX"),
614 STM32_FUNCTION(13, "FMC_NWE"),
615 STM32_FUNCTION(16, "EVENTOUT"),
616 STM32_FUNCTION(17, "ANALOG")
617 ),
618 STM32_PIN(
619 PINCTRL_PIN(54, "PD6"),
620 STM32_FUNCTION(0, "GPIOD6"),
621 STM32_FUNCTION(6, "SPI3_MOSI I2S3_SD"),
622 STM32_FUNCTION(7, "SAI1_SD_A"),
623 STM32_FUNCTION(8, "USART2_RX"),
624 STM32_FUNCTION(13, "FMC_NWAIT"),
625 STM32_FUNCTION(14, "DCMI_D10"),
626 STM32_FUNCTION(15, "LCD_B2"),
627 STM32_FUNCTION(16, "EVENTOUT"),
628 STM32_FUNCTION(17, "ANALOG")
629 ),
630 STM32_PIN(
631 PINCTRL_PIN(55, "PD7"),
632 STM32_FUNCTION(0, "GPIOD7"),
633 STM32_FUNCTION(8, "USART2_CK"),
634 STM32_FUNCTION(9, "SPDIFRX_IN0"),
635 STM32_FUNCTION(13, "FMC_NE1"),
636 STM32_FUNCTION(16, "EVENTOUT"),
637 STM32_FUNCTION(17, "ANALOG")
638 ),
639 STM32_PIN(
640 PINCTRL_PIN(56, "PD8"),
641 STM32_FUNCTION(0, "GPIOD8"),
642 STM32_FUNCTION(8, "USART3_TX"),
643 STM32_FUNCTION(9, "SPDIFRX_IN1"),
644 STM32_FUNCTION(13, "FMC_D13"),
645 STM32_FUNCTION(16, "EVENTOUT"),
646 STM32_FUNCTION(17, "ANALOG")
647 ),
648 STM32_PIN(
649 PINCTRL_PIN(57, "PD9"),
650 STM32_FUNCTION(0, "GPIOD9"),
651 STM32_FUNCTION(8, "USART3_RX"),
652 STM32_FUNCTION(13, "FMC_D14"),
653 STM32_FUNCTION(16, "EVENTOUT"),
654 STM32_FUNCTION(17, "ANALOG")
655 ),
656 STM32_PIN(
657 PINCTRL_PIN(58, "PD10"),
658 STM32_FUNCTION(0, "GPIOD10"),
659 STM32_FUNCTION(8, "USART3_CK"),
660 STM32_FUNCTION(13, "FMC_D15"),
661 STM32_FUNCTION(15, "LCD_B3"),
662 STM32_FUNCTION(16, "EVENTOUT"),
663 STM32_FUNCTION(17, "ANALOG")
664 ),
665 STM32_PIN(
666 PINCTRL_PIN(59, "PD11"),
667 STM32_FUNCTION(0, "GPIOD11"),
668 STM32_FUNCTION(5, "I2C4_SMBA"),
669 STM32_FUNCTION(8, "USART3_CTS"),
670 STM32_FUNCTION(10, "QUADSPI_BK1_IO0"),
671 STM32_FUNCTION(11, "SAI2_SD_A"),
672 STM32_FUNCTION(13, "FMC_A16 FMC_CLE"),
673 STM32_FUNCTION(16, "EVENTOUT"),
674 STM32_FUNCTION(17, "ANALOG")
675 ),
676 STM32_PIN(
677 PINCTRL_PIN(60, "PD12"),
678 STM32_FUNCTION(0, "GPIOD12"),
679 STM32_FUNCTION(3, "TIM4_CH1"),
680 STM32_FUNCTION(4, "LPTIM1_IN1"),
681 STM32_FUNCTION(5, "I2C4_SCL"),
682 STM32_FUNCTION(8, "USART3_RTS"),
683 STM32_FUNCTION(10, "QUADSPI_BK1_IO1"),
684 STM32_FUNCTION(11, "SAI2_FS_A"),
685 STM32_FUNCTION(13, "FMC_A17 FMC_ALE"),
686 STM32_FUNCTION(16, "EVENTOUT"),
687 STM32_FUNCTION(17, "ANALOG")
688 ),
689 STM32_PIN(
690 PINCTRL_PIN(61, "PD13"),
691 STM32_FUNCTION(0, "GPIOD13"),
692 STM32_FUNCTION(3, "TIM4_CH2"),
693 STM32_FUNCTION(4, "LPTIM1_OUT"),
694 STM32_FUNCTION(5, "I2C4_SDA"),
695 STM32_FUNCTION(10, "QUADSPI_BK1_IO3"),
696 STM32_FUNCTION(11, "SAI2_SCK_A"),
697 STM32_FUNCTION(13, "FMC_A18"),
698 STM32_FUNCTION(16, "EVENTOUT"),
699 STM32_FUNCTION(17, "ANALOG")
700 ),
701 STM32_PIN(
702 PINCTRL_PIN(62, "PD14"),
703 STM32_FUNCTION(0, "GPIOD14"),
704 STM32_FUNCTION(3, "TIM4_CH3"),
705 STM32_FUNCTION(9, "UART8_CTS"),
706 STM32_FUNCTION(13, "FMC_D0"),
707 STM32_FUNCTION(16, "EVENTOUT"),
708 STM32_FUNCTION(17, "ANALOG")
709 ),
710 STM32_PIN(
711 PINCTRL_PIN(63, "PD15"),
712 STM32_FUNCTION(0, "GPIOD15"),
713 STM32_FUNCTION(3, "TIM4_CH4"),
714 STM32_FUNCTION(9, "UART8_RTS"),
715 STM32_FUNCTION(13, "FMC_D1"),
716 STM32_FUNCTION(16, "EVENTOUT"),
717 STM32_FUNCTION(17, "ANALOG")
718 ),
719 STM32_PIN(
720 PINCTRL_PIN(64, "PE0"),
721 STM32_FUNCTION(0, "GPIOE0"),
722 STM32_FUNCTION(3, "TIM4_ETR"),
723 STM32_FUNCTION(4, "LPTIM1_ETR"),
724 STM32_FUNCTION(9, "UART8_RX"),
725 STM32_FUNCTION(11, "SAI2_MCLK_A"),
726 STM32_FUNCTION(13, "FMC_NBL0"),
727 STM32_FUNCTION(14, "DCMI_D2"),
728 STM32_FUNCTION(16, "EVENTOUT"),
729 STM32_FUNCTION(17, "ANALOG")
730 ),
731 STM32_PIN(
732 PINCTRL_PIN(65, "PE1"),
733 STM32_FUNCTION(0, "GPIOE1"),
734 STM32_FUNCTION(4, "LPTIM1_IN2"),
735 STM32_FUNCTION(9, "UART8_TX"),
736 STM32_FUNCTION(13, "FMC_NBL1"),
737 STM32_FUNCTION(14, "DCMI_D3"),
738 STM32_FUNCTION(16, "EVENTOUT"),
739 STM32_FUNCTION(17, "ANALOG")
740 ),
741 STM32_PIN(
742 PINCTRL_PIN(66, "PE2"),
743 STM32_FUNCTION(0, "GPIOE2"),
744 STM32_FUNCTION(1, "TRACECLK"),
745 STM32_FUNCTION(6, "SPI4_SCK"),
746 STM32_FUNCTION(7, "SAI1_MCLK_A"),
747 STM32_FUNCTION(10, "QUADSPI_BK1_IO2"),
748 STM32_FUNCTION(12, "ETH_MII_TXD3"),
749 STM32_FUNCTION(13, "FMC_A23"),
750 STM32_FUNCTION(16, "EVENTOUT"),
751 STM32_FUNCTION(17, "ANALOG")
752 ),
753 STM32_PIN(
754 PINCTRL_PIN(67, "PE3"),
755 STM32_FUNCTION(0, "GPIOE3"),
756 STM32_FUNCTION(1, "TRACED0"),
757 STM32_FUNCTION(7, "SAI1_SD_B"),
758 STM32_FUNCTION(13, "FMC_A19"),
759 STM32_FUNCTION(16, "EVENTOUT"),
760 STM32_FUNCTION(17, "ANALOG")
761 ),
762 STM32_PIN(
763 PINCTRL_PIN(68, "PE4"),
764 STM32_FUNCTION(0, "GPIOE4"),
765 STM32_FUNCTION(1, "TRACED1"),
766 STM32_FUNCTION(6, "SPI4_NSS"),
767 STM32_FUNCTION(7, "SAI1_FS_A"),
768 STM32_FUNCTION(13, "FMC_A20"),
769 STM32_FUNCTION(14, "DCMI_D4"),
770 STM32_FUNCTION(15, "LCD_B0"),
771 STM32_FUNCTION(16, "EVENTOUT"),
772 STM32_FUNCTION(17, "ANALOG")
773 ),
774 STM32_PIN(
775 PINCTRL_PIN(69, "PE5"),
776 STM32_FUNCTION(0, "GPIOE5"),
777 STM32_FUNCTION(1, "TRACED2"),
778 STM32_FUNCTION(4, "TIM9_CH1"),
779 STM32_FUNCTION(6, "SPI4_MISO"),
780 STM32_FUNCTION(7, "SAI1_SCK_A"),
781 STM32_FUNCTION(13, "FMC_A21"),
782 STM32_FUNCTION(14, "DCMI_D6"),
783 STM32_FUNCTION(15, "LCD_G0"),
784 STM32_FUNCTION(16, "EVENTOUT"),
785 STM32_FUNCTION(17, "ANALOG")
786 ),
787 STM32_PIN(
788 PINCTRL_PIN(70, "PE6"),
789 STM32_FUNCTION(0, "GPIOE6"),
790 STM32_FUNCTION(1, "TRACED3"),
791 STM32_FUNCTION(2, "TIM1_BKIN2"),
792 STM32_FUNCTION(4, "TIM9_CH2"),
793 STM32_FUNCTION(6, "SPI4_MOSI"),
794 STM32_FUNCTION(7, "SAI1_SD_A"),
795 STM32_FUNCTION(11, "SAI2_MCLK_B"),
796 STM32_FUNCTION(13, "FMC_A22"),
797 STM32_FUNCTION(14, "DCMI_D7"),
798 STM32_FUNCTION(15, "LCD_G1"),
799 STM32_FUNCTION(16, "EVENTOUT"),
800 STM32_FUNCTION(17, "ANALOG")
801 ),
802 STM32_PIN(
803 PINCTRL_PIN(71, "PE7"),
804 STM32_FUNCTION(0, "GPIOE7"),
805 STM32_FUNCTION(2, "TIM1_ETR"),
806 STM32_FUNCTION(9, "UART7_RX"),
807 STM32_FUNCTION(11, "QUADSPI_BK2_IO0"),
808 STM32_FUNCTION(13, "FMC_D4"),
809 STM32_FUNCTION(16, "EVENTOUT"),
810 STM32_FUNCTION(17, "ANALOG")
811 ),
812 STM32_PIN(
813 PINCTRL_PIN(72, "PE8"),
814 STM32_FUNCTION(0, "GPIOE8"),
815 STM32_FUNCTION(2, "TIM1_CH1N"),
816 STM32_FUNCTION(9, "UART7_TX"),
817 STM32_FUNCTION(11, "QUADSPI_BK2_IO1"),
818 STM32_FUNCTION(13, "FMC_D5"),
819 STM32_FUNCTION(16, "EVENTOUT"),
820 STM32_FUNCTION(17, "ANALOG")
821 ),
822 STM32_PIN(
823 PINCTRL_PIN(73, "PE9"),
824 STM32_FUNCTION(0, "GPIOE9"),
825 STM32_FUNCTION(2, "TIM1_CH1"),
826 STM32_FUNCTION(9, "UART7_RTS"),
827 STM32_FUNCTION(11, "QUADSPI_BK2_IO2"),
828 STM32_FUNCTION(13, "FMC_D6"),
829 STM32_FUNCTION(16, "EVENTOUT"),
830 STM32_FUNCTION(17, "ANALOG")
831 ),
832 STM32_PIN(
833 PINCTRL_PIN(74, "PE10"),
834 STM32_FUNCTION(0, "GPIOE10"),
835 STM32_FUNCTION(2, "TIM1_CH2N"),
836 STM32_FUNCTION(9, "UART7_CTS"),
837 STM32_FUNCTION(11, "QUADSPI_BK2_IO3"),
838 STM32_FUNCTION(13, "FMC_D7"),
839 STM32_FUNCTION(16, "EVENTOUT"),
840 STM32_FUNCTION(17, "ANALOG")
841 ),
842 STM32_PIN(
843 PINCTRL_PIN(75, "PE11"),
844 STM32_FUNCTION(0, "GPIOE11"),
845 STM32_FUNCTION(2, "TIM1_CH2"),
846 STM32_FUNCTION(6, "SPI4_NSS"),
847 STM32_FUNCTION(11, "SAI2_SD_B"),
848 STM32_FUNCTION(13, "FMC_D8"),
849 STM32_FUNCTION(15, "LCD_G3"),
850 STM32_FUNCTION(16, "EVENTOUT"),
851 STM32_FUNCTION(17, "ANALOG")
852 ),
853 STM32_PIN(
854 PINCTRL_PIN(76, "PE12"),
855 STM32_FUNCTION(0, "GPIOE12"),
856 STM32_FUNCTION(2, "TIM1_CH3N"),
857 STM32_FUNCTION(6, "SPI4_SCK"),
858 STM32_FUNCTION(11, "SAI2_SCK_B"),
859 STM32_FUNCTION(13, "FMC_D9"),
860 STM32_FUNCTION(15, "LCD_B4"),
861 STM32_FUNCTION(16, "EVENTOUT"),
862 STM32_FUNCTION(17, "ANALOG")
863 ),
864 STM32_PIN(
865 PINCTRL_PIN(77, "PE13"),
866 STM32_FUNCTION(0, "GPIOE13"),
867 STM32_FUNCTION(2, "TIM1_CH3"),
868 STM32_FUNCTION(6, "SPI4_MISO"),
869 STM32_FUNCTION(11, "SAI2_FS_B"),
870 STM32_FUNCTION(13, "FMC_D10"),
871 STM32_FUNCTION(15, "LCD_DE"),
872 STM32_FUNCTION(16, "EVENTOUT"),
873 STM32_FUNCTION(17, "ANALOG")
874 ),
875 STM32_PIN(
876 PINCTRL_PIN(78, "PE14"),
877 STM32_FUNCTION(0, "GPIOE14"),
878 STM32_FUNCTION(2, "TIM1_CH4"),
879 STM32_FUNCTION(6, "SPI4_MOSI"),
880 STM32_FUNCTION(11, "SAI2_MCLK_B"),
881 STM32_FUNCTION(13, "FMC_D11"),
882 STM32_FUNCTION(15, "LCD_CLK"),
883 STM32_FUNCTION(16, "EVENTOUT"),
884 STM32_FUNCTION(17, "ANALOG")
885 ),
886 STM32_PIN(
887 PINCTRL_PIN(79, "PE15"),
888 STM32_FUNCTION(0, "GPIOE15"),
889 STM32_FUNCTION(2, "TIM1_BKIN"),
890 STM32_FUNCTION(13, "FMC_D12"),
891 STM32_FUNCTION(15, "LCD_R7"),
892 STM32_FUNCTION(16, "EVENTOUT"),
893 STM32_FUNCTION(17, "ANALOG")
894 ),
895 STM32_PIN(
896 PINCTRL_PIN(80, "PF0"),
897 STM32_FUNCTION(0, "GPIOF0"),
898 STM32_FUNCTION(5, "I2C2_SDA"),
899 STM32_FUNCTION(13, "FMC_A0"),
900 STM32_FUNCTION(16, "EVENTOUT"),
901 STM32_FUNCTION(17, "ANALOG")
902 ),
903 STM32_PIN(
904 PINCTRL_PIN(81, "PF1"),
905 STM32_FUNCTION(0, "GPIOF1"),
906 STM32_FUNCTION(5, "I2C2_SCL"),
907 STM32_FUNCTION(13, "FMC_A1"),
908 STM32_FUNCTION(16, "EVENTOUT"),
909 STM32_FUNCTION(17, "ANALOG")
910 ),
911 STM32_PIN(
912 PINCTRL_PIN(82, "PF2"),
913 STM32_FUNCTION(0, "GPIOF2"),
914 STM32_FUNCTION(5, "I2C2_SMBA"),
915 STM32_FUNCTION(13, "FMC_A2"),
916 STM32_FUNCTION(16, "EVENTOUT"),
917 STM32_FUNCTION(17, "ANALOG")
918 ),
919 STM32_PIN(
920 PINCTRL_PIN(83, "PF3"),
921 STM32_FUNCTION(0, "GPIOF3"),
922 STM32_FUNCTION(13, "FMC_A3"),
923 STM32_FUNCTION(16, "EVENTOUT"),
924 STM32_FUNCTION(17, "ANALOG")
925 ),
926 STM32_PIN(
927 PINCTRL_PIN(84, "PF4"),
928 STM32_FUNCTION(0, "GPIOF4"),
929 STM32_FUNCTION(13, "FMC_A4"),
930 STM32_FUNCTION(16, "EVENTOUT"),
931 STM32_FUNCTION(17, "ANALOG")
932 ),
933 STM32_PIN(
934 PINCTRL_PIN(85, "PF5"),
935 STM32_FUNCTION(0, "GPIOF5"),
936 STM32_FUNCTION(13, "FMC_A5"),
937 STM32_FUNCTION(16, "EVENTOUT"),
938 STM32_FUNCTION(17, "ANALOG")
939 ),
940 STM32_PIN(
941 PINCTRL_PIN(86, "PF6"),
942 STM32_FUNCTION(0, "GPIOF6"),
943 STM32_FUNCTION(4, "TIM10_CH1"),
944 STM32_FUNCTION(6, "SPI5_NSS"),
945 STM32_FUNCTION(7, "SAI1_SD_B"),
946 STM32_FUNCTION(9, "UART7_RX"),
947 STM32_FUNCTION(10, "QUADSPI_BK1_IO3"),
948 STM32_FUNCTION(16, "EVENTOUT"),
949 STM32_FUNCTION(17, "ANALOG")
950 ),
951 STM32_PIN(
952 PINCTRL_PIN(87, "PF7"),
953 STM32_FUNCTION(0, "GPIOF7"),
954 STM32_FUNCTION(4, "TIM11_CH1"),
955 STM32_FUNCTION(6, "SPI5_SCK"),
956 STM32_FUNCTION(7, "SAI1_MCLK_B"),
957 STM32_FUNCTION(9, "UART7_TX"),
958 STM32_FUNCTION(10, "QUADSPI_BK1_IO2"),
959 STM32_FUNCTION(16, "EVENTOUT"),
960 STM32_FUNCTION(17, "ANALOG")
961 ),
962 STM32_PIN(
963 PINCTRL_PIN(88, "PF8"),
964 STM32_FUNCTION(0, "GPIOF8"),
965 STM32_FUNCTION(6, "SPI5_MISO"),
966 STM32_FUNCTION(7, "SAI1_SCK_B"),
967 STM32_FUNCTION(9, "UART7_RTS"),
968 STM32_FUNCTION(10, "TIM13_CH1"),
969 STM32_FUNCTION(11, "QUADSPI_BK1_IO0"),
970 STM32_FUNCTION(16, "EVENTOUT"),
971 STM32_FUNCTION(17, "ANALOG")
972 ),
973 STM32_PIN(
974 PINCTRL_PIN(89, "PF9"),
975 STM32_FUNCTION(0, "GPIOF9"),
976 STM32_FUNCTION(6, "SPI5_MOSI"),
977 STM32_FUNCTION(7, "SAI1_FS_B"),
978 STM32_FUNCTION(9, "UART7_CTS"),
979 STM32_FUNCTION(10, "TIM14_CH1"),
980 STM32_FUNCTION(11, "QUADSPI_BK1_IO1"),
981 STM32_FUNCTION(16, "EVENTOUT"),
982 STM32_FUNCTION(17, "ANALOG")
983 ),
984 STM32_PIN(
985 PINCTRL_PIN(90, "PF10"),
986 STM32_FUNCTION(0, "GPIOF10"),
987 STM32_FUNCTION(14, "DCMI_D11"),
988 STM32_FUNCTION(15, "LCD_DE"),
989 STM32_FUNCTION(16, "EVENTOUT"),
990 STM32_FUNCTION(17, "ANALOG")
991 ),
992 STM32_PIN(
993 PINCTRL_PIN(91, "PF11"),
994 STM32_FUNCTION(0, "GPIOF11"),
995 STM32_FUNCTION(6, "SPI5_MOSI"),
996 STM32_FUNCTION(11, "SAI2_SD_B"),
997 STM32_FUNCTION(13, "FMC_SDNRAS"),
998 STM32_FUNCTION(14, "DCMI_D12"),
999 STM32_FUNCTION(16, "EVENTOUT"),
1000 STM32_FUNCTION(17, "ANALOG")
1001 ),
1002 STM32_PIN(
1003 PINCTRL_PIN(92, "PF12"),
1004 STM32_FUNCTION(0, "GPIOF12"),
1005 STM32_FUNCTION(13, "FMC_A6"),
1006 STM32_FUNCTION(16, "EVENTOUT"),
1007 STM32_FUNCTION(17, "ANALOG")
1008 ),
1009 STM32_PIN(
1010 PINCTRL_PIN(93, "PF13"),
1011 STM32_FUNCTION(0, "GPIOF13"),
1012 STM32_FUNCTION(5, "I2C4_SMBA"),
1013 STM32_FUNCTION(13, "FMC_A7"),
1014 STM32_FUNCTION(16, "EVENTOUT"),
1015 STM32_FUNCTION(17, "ANALOG")
1016 ),
1017 STM32_PIN(
1018 PINCTRL_PIN(94, "PF14"),
1019 STM32_FUNCTION(0, "GPIOF14"),
1020 STM32_FUNCTION(5, "I2C4_SCL"),
1021 STM32_FUNCTION(13, "FMC_A8"),
1022 STM32_FUNCTION(16, "EVENTOUT"),
1023 STM32_FUNCTION(17, "ANALOG")
1024 ),
1025 STM32_PIN(
1026 PINCTRL_PIN(95, "PF15"),
1027 STM32_FUNCTION(0, "GPIOF15"),
1028 STM32_FUNCTION(5, "I2C4_SDA"),
1029 STM32_FUNCTION(13, "FMC_A9"),
1030 STM32_FUNCTION(16, "EVENTOUT"),
1031 STM32_FUNCTION(17, "ANALOG")
1032 ),
1033 STM32_PIN(
1034 PINCTRL_PIN(96, "PG0"),
1035 STM32_FUNCTION(0, "GPIOG0"),
1036 STM32_FUNCTION(13, "FMC_A10"),
1037 STM32_FUNCTION(16, "EVENTOUT"),
1038 STM32_FUNCTION(17, "ANALOG")
1039 ),
1040 STM32_PIN(
1041 PINCTRL_PIN(97, "PG1"),
1042 STM32_FUNCTION(0, "GPIOG1"),
1043 STM32_FUNCTION(13, "FMC_A11"),
1044 STM32_FUNCTION(16, "EVENTOUT"),
1045 STM32_FUNCTION(17, "ANALOG")
1046 ),
1047 STM32_PIN(
1048 PINCTRL_PIN(98, "PG2"),
1049 STM32_FUNCTION(0, "GPIOG2"),
1050 STM32_FUNCTION(13, "FMC_A12"),
1051 STM32_FUNCTION(16, "EVENTOUT"),
1052 STM32_FUNCTION(17, "ANALOG")
1053 ),
1054 STM32_PIN(
1055 PINCTRL_PIN(99, "PG3"),
1056 STM32_FUNCTION(0, "GPIOG3"),
1057 STM32_FUNCTION(13, "FMC_A13"),
1058 STM32_FUNCTION(16, "EVENTOUT"),
1059 STM32_FUNCTION(17, "ANALOG")
1060 ),
1061 STM32_PIN(
1062 PINCTRL_PIN(100, "PG4"),
1063 STM32_FUNCTION(0, "GPIOG4"),
1064 STM32_FUNCTION(13, "FMC_A14 FMC_BA0"),
1065 STM32_FUNCTION(16, "EVENTOUT"),
1066 STM32_FUNCTION(17, "ANALOG")
1067 ),
1068 STM32_PIN(
1069 PINCTRL_PIN(101, "PG5"),
1070 STM32_FUNCTION(0, "GPIOG5"),
1071 STM32_FUNCTION(13, "FMC_A15 FMC_BA1"),
1072 STM32_FUNCTION(16, "EVENTOUT"),
1073 STM32_FUNCTION(17, "ANALOG")
1074 ),
1075 STM32_PIN(
1076 PINCTRL_PIN(102, "PG6"),
1077 STM32_FUNCTION(0, "GPIOG6"),
1078 STM32_FUNCTION(14, "DCMI_D12"),
1079 STM32_FUNCTION(15, "LCD_R7"),
1080 STM32_FUNCTION(16, "EVENTOUT"),
1081 STM32_FUNCTION(17, "ANALOG")
1082 ),
1083 STM32_PIN(
1084 PINCTRL_PIN(103, "PG7"),
1085 STM32_FUNCTION(0, "GPIOG7"),
1086 STM32_FUNCTION(9, "USART6_CK"),
1087 STM32_FUNCTION(13, "FMC_INT"),
1088 STM32_FUNCTION(14, "DCMI_D13"),
1089 STM32_FUNCTION(15, "LCD_CLK"),
1090 STM32_FUNCTION(16, "EVENTOUT"),
1091 STM32_FUNCTION(17, "ANALOG")
1092 ),
1093 STM32_PIN(
1094 PINCTRL_PIN(104, "PG8"),
1095 STM32_FUNCTION(0, "GPIOG8"),
1096 STM32_FUNCTION(6, "SPI6_NSS"),
1097 STM32_FUNCTION(8, "SPDIFRX_IN2"),
1098 STM32_FUNCTION(9, "USART6_RTS"),
1099 STM32_FUNCTION(12, "ETH_PPS_OUT"),
1100 STM32_FUNCTION(13, "FMC_SDCLK"),
1101 STM32_FUNCTION(16, "EVENTOUT"),
1102 STM32_FUNCTION(17, "ANALOG")
1103 ),
1104 STM32_PIN(
1105 PINCTRL_PIN(105, "PG9"),
1106 STM32_FUNCTION(0, "GPIOG9"),
1107 STM32_FUNCTION(8, "SPDIFRX_IN3"),
1108 STM32_FUNCTION(9, "USART6_RX"),
1109 STM32_FUNCTION(10, "QUADSPI_BK2_IO2"),
1110 STM32_FUNCTION(11, "SAI2_FS_B"),
1111 STM32_FUNCTION(13, "FMC_NE2 FMC_NCE"),
1112 STM32_FUNCTION(14, "DCMI_VSYNC"),
1113 STM32_FUNCTION(16, "EVENTOUT"),
1114 STM32_FUNCTION(17, "ANALOG")
1115 ),
1116 STM32_PIN(
1117 PINCTRL_PIN(106, "PG10"),
1118 STM32_FUNCTION(0, "GPIOG10"),
1119 STM32_FUNCTION(10, "LCD_G3"),
1120 STM32_FUNCTION(11, "SAI2_SD_B"),
1121 STM32_FUNCTION(13, "FMC_NE3"),
1122 STM32_FUNCTION(14, "DCMI_D2"),
1123 STM32_FUNCTION(15, "LCD_B2"),
1124 STM32_FUNCTION(16, "EVENTOUT"),
1125 STM32_FUNCTION(17, "ANALOG")
1126 ),
1127 STM32_PIN(
1128 PINCTRL_PIN(107, "PG11"),
1129 STM32_FUNCTION(0, "GPIOG11"),
1130 STM32_FUNCTION(8, "SPDIFRX_IN0"),
1131 STM32_FUNCTION(12, "ETH_MII_TX_EN ETH_RMII_TX_EN"),
1132 STM32_FUNCTION(14, "DCMI_D3"),
1133 STM32_FUNCTION(15, "LCD_B3"),
1134 STM32_FUNCTION(16, "EVENTOUT"),
1135 STM32_FUNCTION(17, "ANALOG")
1136 ),
1137 STM32_PIN(
1138 PINCTRL_PIN(108, "PG12"),
1139 STM32_FUNCTION(0, "GPIOG12"),
1140 STM32_FUNCTION(4, "LPTIM1_IN1"),
1141 STM32_FUNCTION(6, "SPI6_MISO"),
1142 STM32_FUNCTION(8, "SPDIFRX_IN1"),
1143 STM32_FUNCTION(9, "USART6_RTS"),
1144 STM32_FUNCTION(10, "LCD_B4"),
1145 STM32_FUNCTION(13, "FMC_NE4"),
1146 STM32_FUNCTION(15, "LCD_B1"),
1147 STM32_FUNCTION(16, "EVENTOUT"),
1148 STM32_FUNCTION(17, "ANALOG")
1149 ),
1150 STM32_PIN(
1151 PINCTRL_PIN(109, "PG13"),
1152 STM32_FUNCTION(0, "GPIOG13"),
1153 STM32_FUNCTION(1, "TRACED0"),
1154 STM32_FUNCTION(4, "LPTIM1_OUT"),
1155 STM32_FUNCTION(6, "SPI6_SCK"),
1156 STM32_FUNCTION(9, "USART6_CTS"),
1157 STM32_FUNCTION(12, "ETH_MII_TXD0 ETH_RMII_TXD0"),
1158 STM32_FUNCTION(13, "FMC_A24"),
1159 STM32_FUNCTION(15, "LCD_R0"),
1160 STM32_FUNCTION(16, "EVENTOUT"),
1161 STM32_FUNCTION(17, "ANALOG")
1162 ),
1163 STM32_PIN(
1164 PINCTRL_PIN(110, "PG14"),
1165 STM32_FUNCTION(0, "GPIOG14"),
1166 STM32_FUNCTION(1, "TRACED1"),
1167 STM32_FUNCTION(4, "LPTIM1_ETR"),
1168 STM32_FUNCTION(6, "SPI6_MOSI"),
1169 STM32_FUNCTION(9, "USART6_TX"),
1170 STM32_FUNCTION(10, "QUADSPI_BK2_IO3"),
1171 STM32_FUNCTION(12, "ETH_MII_TXD1 ETH_RMII_TXD1"),
1172 STM32_FUNCTION(13, "FMC_A25"),
1173 STM32_FUNCTION(15, "LCD_B0"),
1174 STM32_FUNCTION(16, "EVENTOUT"),
1175 STM32_FUNCTION(17, "ANALOG")
1176 ),
1177 STM32_PIN(
1178 PINCTRL_PIN(111, "PG15"),
1179 STM32_FUNCTION(0, "GPIOG15"),
1180 STM32_FUNCTION(9, "USART6_CTS"),
1181 STM32_FUNCTION(13, "FMC_SDNCAS"),
1182 STM32_FUNCTION(14, "DCMI_D13"),
1183 STM32_FUNCTION(16, "EVENTOUT"),
1184 STM32_FUNCTION(17, "ANALOG")
1185 ),
1186 STM32_PIN(
1187 PINCTRL_PIN(112, "PH0"),
1188 STM32_FUNCTION(0, "GPIOH0"),
1189 STM32_FUNCTION(16, "EVENTOUT"),
1190 STM32_FUNCTION(17, "ANALOG")
1191 ),
1192 STM32_PIN(
1193 PINCTRL_PIN(113, "PH1"),
1194 STM32_FUNCTION(0, "GPIOH1"),
1195 STM32_FUNCTION(16, "EVENTOUT"),
1196 STM32_FUNCTION(17, "ANALOG")
1197 ),
1198 STM32_PIN(
1199 PINCTRL_PIN(114, "PH2"),
1200 STM32_FUNCTION(0, "GPIOH2"),
1201 STM32_FUNCTION(4, "LPTIM1_IN2"),
1202 STM32_FUNCTION(10, "QUADSPI_BK2_IO0"),
1203 STM32_FUNCTION(11, "SAI2_SCK_B"),
1204 STM32_FUNCTION(12, "ETH_MII_CRS"),
1205 STM32_FUNCTION(13, "FMC_SDCKE0"),
1206 STM32_FUNCTION(15, "LCD_R0"),
1207 STM32_FUNCTION(16, "EVENTOUT"),
1208 STM32_FUNCTION(17, "ANALOG")
1209 ),
1210 STM32_PIN(
1211 PINCTRL_PIN(115, "PH3"),
1212 STM32_FUNCTION(0, "GPIOH3"),
1213 STM32_FUNCTION(10, "QUADSPI_BK2_IO1"),
1214 STM32_FUNCTION(11, "SAI2_MCLK_B"),
1215 STM32_FUNCTION(12, "ETH_MII_COL"),
1216 STM32_FUNCTION(13, "FMC_SDNE0"),
1217 STM32_FUNCTION(15, "LCD_R1"),
1218 STM32_FUNCTION(16, "EVENTOUT"),
1219 STM32_FUNCTION(17, "ANALOG")
1220 ),
1221 STM32_PIN(
1222 PINCTRL_PIN(116, "PH4"),
1223 STM32_FUNCTION(0, "GPIOH4"),
1224 STM32_FUNCTION(5, "I2C2_SCL"),
1225 STM32_FUNCTION(11, "OTG_HS_ULPI_NXT"),
1226 STM32_FUNCTION(16, "EVENTOUT"),
1227 STM32_FUNCTION(17, "ANALOG")
1228 ),
1229 STM32_PIN(
1230 PINCTRL_PIN(117, "PH5"),
1231 STM32_FUNCTION(0, "GPIOH5"),
1232 STM32_FUNCTION(5, "I2C2_SDA"),
1233 STM32_FUNCTION(6, "SPI5_NSS"),
1234 STM32_FUNCTION(13, "FMC_SDNWE"),
1235 STM32_FUNCTION(16, "EVENTOUT"),
1236 STM32_FUNCTION(17, "ANALOG")
1237 ),
1238 STM32_PIN(
1239 PINCTRL_PIN(118, "PH6"),
1240 STM32_FUNCTION(0, "GPIOH6"),
1241 STM32_FUNCTION(5, "I2C2_SMBA"),
1242 STM32_FUNCTION(6, "SPI5_SCK"),
1243 STM32_FUNCTION(10, "TIM12_CH1"),
1244 STM32_FUNCTION(12, "ETH_MII_RXD2"),
1245 STM32_FUNCTION(13, "FMC_SDNE1"),
1246 STM32_FUNCTION(14, "DCMI_D8"),
1247 STM32_FUNCTION(16, "EVENTOUT"),
1248 STM32_FUNCTION(17, "ANALOG")
1249 ),
1250 STM32_PIN(
1251 PINCTRL_PIN(119, "PH7"),
1252 STM32_FUNCTION(0, "GPIOH7"),
1253 STM32_FUNCTION(5, "I2C3_SCL"),
1254 STM32_FUNCTION(6, "SPI5_MISO"),
1255 STM32_FUNCTION(12, "ETH_MII_RXD3"),
1256 STM32_FUNCTION(13, "FMC_SDCKE1"),
1257 STM32_FUNCTION(14, "DCMI_D9"),
1258 STM32_FUNCTION(16, "EVENTOUT"),
1259 STM32_FUNCTION(17, "ANALOG")
1260 ),
1261 STM32_PIN(
1262 PINCTRL_PIN(120, "PH8"),
1263 STM32_FUNCTION(0, "GPIOH8"),
1264 STM32_FUNCTION(5, "I2C3_SDA"),
1265 STM32_FUNCTION(13, "FMC_D16"),
1266 STM32_FUNCTION(14, "DCMI_HSYNC"),
1267 STM32_FUNCTION(15, "LCD_R2"),
1268 STM32_FUNCTION(16, "EVENTOUT"),
1269 STM32_FUNCTION(17, "ANALOG")
1270 ),
1271 STM32_PIN(
1272 PINCTRL_PIN(121, "PH9"),
1273 STM32_FUNCTION(0, "GPIOH9"),
1274 STM32_FUNCTION(5, "I2C3_SMBA"),
1275 STM32_FUNCTION(10, "TIM12_CH2"),
1276 STM32_FUNCTION(13, "FMC_D17"),
1277 STM32_FUNCTION(14, "DCMI_D0"),
1278 STM32_FUNCTION(15, "LCD_R3"),
1279 STM32_FUNCTION(16, "EVENTOUT"),
1280 STM32_FUNCTION(17, "ANALOG")
1281 ),
1282 STM32_PIN(
1283 PINCTRL_PIN(122, "PH10"),
1284 STM32_FUNCTION(0, "GPIOH10"),
1285 STM32_FUNCTION(3, "TIM5_CH1"),
1286 STM32_FUNCTION(5, "I2C4_SMBA"),
1287 STM32_FUNCTION(13, "FMC_D18"),
1288 STM32_FUNCTION(14, "DCMI_D1"),
1289 STM32_FUNCTION(15, "LCD_R4"),
1290 STM32_FUNCTION(16, "EVENTOUT"),
1291 STM32_FUNCTION(17, "ANALOG")
1292 ),
1293 STM32_PIN(
1294 PINCTRL_PIN(123, "PH11"),
1295 STM32_FUNCTION(0, "GPIOH11"),
1296 STM32_FUNCTION(3, "TIM5_CH2"),
1297 STM32_FUNCTION(5, "I2C4_SCL"),
1298 STM32_FUNCTION(13, "FMC_D19"),
1299 STM32_FUNCTION(14, "DCMI_D2"),
1300 STM32_FUNCTION(15, "LCD_R5"),
1301 STM32_FUNCTION(16, "EVENTOUT"),
1302 STM32_FUNCTION(17, "ANALOG")
1303 ),
1304 STM32_PIN(
1305 PINCTRL_PIN(124, "PH12"),
1306 STM32_FUNCTION(0, "GPIOH12"),
1307 STM32_FUNCTION(3, "TIM5_CH3"),
1308 STM32_FUNCTION(5, "I2C4_SDA"),
1309 STM32_FUNCTION(13, "FMC_D20"),
1310 STM32_FUNCTION(14, "DCMI_D3"),
1311 STM32_FUNCTION(15, "LCD_R6"),
1312 STM32_FUNCTION(16, "EVENTOUT"),
1313 STM32_FUNCTION(17, "ANALOG")
1314 ),
1315 STM32_PIN(
1316 PINCTRL_PIN(125, "PH13"),
1317 STM32_FUNCTION(0, "GPIOH13"),
1318 STM32_FUNCTION(4, "TIM8_CH1N"),
1319 STM32_FUNCTION(10, "CAN1_TX"),
1320 STM32_FUNCTION(13, "FMC_D21"),
1321 STM32_FUNCTION(15, "LCD_G2"),
1322 STM32_FUNCTION(16, "EVENTOUT"),
1323 STM32_FUNCTION(17, "ANALOG")
1324 ),
1325 STM32_PIN(
1326 PINCTRL_PIN(126, "PH14"),
1327 STM32_FUNCTION(0, "GPIOH14"),
1328 STM32_FUNCTION(4, "TIM8_CH2N"),
1329 STM32_FUNCTION(13, "FMC_D22"),
1330 STM32_FUNCTION(14, "DCMI_D4"),
1331 STM32_FUNCTION(15, "LCD_G3"),
1332 STM32_FUNCTION(16, "EVENTOUT"),
1333 STM32_FUNCTION(17, "ANALOG")
1334 ),
1335 STM32_PIN(
1336 PINCTRL_PIN(127, "PH15"),
1337 STM32_FUNCTION(0, "GPIOH15"),
1338 STM32_FUNCTION(4, "TIM8_CH3N"),
1339 STM32_FUNCTION(13, "FMC_D23"),
1340 STM32_FUNCTION(14, "DCMI_D11"),
1341 STM32_FUNCTION(15, "LCD_G4"),
1342 STM32_FUNCTION(16, "EVENTOUT"),
1343 STM32_FUNCTION(17, "ANALOG")
1344 ),
1345 STM32_PIN(
1346 PINCTRL_PIN(128, "PI0"),
1347 STM32_FUNCTION(0, "GPIOI0"),
1348 STM32_FUNCTION(3, "TIM5_CH4"),
1349 STM32_FUNCTION(6, "SPI2_NSS I2S2_WS"),
1350 STM32_FUNCTION(13, "FMC_D24"),
1351 STM32_FUNCTION(14, "DCMI_D13"),
1352 STM32_FUNCTION(15, "LCD_G5"),
1353 STM32_FUNCTION(16, "EVENTOUT"),
1354 STM32_FUNCTION(17, "ANALOG")
1355 ),
1356 STM32_PIN(
1357 PINCTRL_PIN(129, "PI1"),
1358 STM32_FUNCTION(0, "GPIOI1"),
1359 STM32_FUNCTION(4, "TIM8_BKIN2"),
1360 STM32_FUNCTION(6, "SPI2_SCK I2S2_CK"),
1361 STM32_FUNCTION(13, "FMC_D25"),
1362 STM32_FUNCTION(14, "DCMI_D8"),
1363 STM32_FUNCTION(15, "LCD_G6"),
1364 STM32_FUNCTION(16, "EVENTOUT"),
1365 STM32_FUNCTION(17, "ANALOG")
1366 ),
1367 STM32_PIN(
1368 PINCTRL_PIN(130, "PI2"),
1369 STM32_FUNCTION(0, "GPIOI2"),
1370 STM32_FUNCTION(4, "TIM8_CH4"),
1371 STM32_FUNCTION(6, "SPI2_MISO"),
1372 STM32_FUNCTION(13, "FMC_D26"),
1373 STM32_FUNCTION(14, "DCMI_D9"),
1374 STM32_FUNCTION(15, "LCD_G7"),
1375 STM32_FUNCTION(16, "EVENTOUT"),
1376 STM32_FUNCTION(17, "ANALOG")
1377 ),
1378 STM32_PIN(
1379 PINCTRL_PIN(131, "PI3"),
1380 STM32_FUNCTION(0, "GPIOI3"),
1381 STM32_FUNCTION(4, "TIM8_ETR"),
1382 STM32_FUNCTION(6, "SPI2_MOSI I2S2_SD"),
1383 STM32_FUNCTION(13, "FMC_D27"),
1384 STM32_FUNCTION(14, "DCMI_D10"),
1385 STM32_FUNCTION(16, "EVENTOUT"),
1386 STM32_FUNCTION(17, "ANALOG")
1387 ),
1388 STM32_PIN(
1389 PINCTRL_PIN(132, "PI4"),
1390 STM32_FUNCTION(0, "GPIOI4"),
1391 STM32_FUNCTION(4, "TIM8_BKIN"),
1392 STM32_FUNCTION(11, "SAI2_MCLK_A"),
1393 STM32_FUNCTION(13, "FMC_NBL2"),
1394 STM32_FUNCTION(14, "DCMI_D5"),
1395 STM32_FUNCTION(15, "LCD_B4"),
1396 STM32_FUNCTION(16, "EVENTOUT"),
1397 STM32_FUNCTION(17, "ANALOG")
1398 ),
1399 STM32_PIN(
1400 PINCTRL_PIN(133, "PI5"),
1401 STM32_FUNCTION(0, "GPIOI5"),
1402 STM32_FUNCTION(4, "TIM8_CH1"),
1403 STM32_FUNCTION(11, "SAI2_SCK_A"),
1404 STM32_FUNCTION(13, "FMC_NBL3"),
1405 STM32_FUNCTION(14, "DCMI_VSYNC"),
1406 STM32_FUNCTION(15, "LCD_B5"),
1407 STM32_FUNCTION(16, "EVENTOUT"),
1408 STM32_FUNCTION(17, "ANALOG")
1409 ),
1410 STM32_PIN(
1411 PINCTRL_PIN(134, "PI6"),
1412 STM32_FUNCTION(0, "GPIOI6"),
1413 STM32_FUNCTION(4, "TIM8_CH2"),
1414 STM32_FUNCTION(11, "SAI2_SD_A"),
1415 STM32_FUNCTION(13, "FMC_D28"),
1416 STM32_FUNCTION(14, "DCMI_D6"),
1417 STM32_FUNCTION(15, "LCD_B6"),
1418 STM32_FUNCTION(16, "EVENTOUT"),
1419 STM32_FUNCTION(17, "ANALOG")
1420 ),
1421 STM32_PIN(
1422 PINCTRL_PIN(135, "PI7"),
1423 STM32_FUNCTION(0, "GPIOI7"),
1424 STM32_FUNCTION(4, "TIM8_CH3"),
1425 STM32_FUNCTION(11, "SAI2_FS_A"),
1426 STM32_FUNCTION(13, "FMC_D29"),
1427 STM32_FUNCTION(14, "DCMI_D7"),
1428 STM32_FUNCTION(15, "LCD_B7"),
1429 STM32_FUNCTION(16, "EVENTOUT"),
1430 STM32_FUNCTION(17, "ANALOG")
1431 ),
1432 STM32_PIN(
1433 PINCTRL_PIN(136, "PI8"),
1434 STM32_FUNCTION(0, "GPIOI8"),
1435 STM32_FUNCTION(16, "EVENTOUT"),
1436 STM32_FUNCTION(17, "ANALOG")
1437 ),
1438 STM32_PIN(
1439 PINCTRL_PIN(137, "PI9"),
1440 STM32_FUNCTION(0, "GPIOI9"),
1441 STM32_FUNCTION(10, "CAN1_RX"),
1442 STM32_FUNCTION(13, "FMC_D30"),
1443 STM32_FUNCTION(15, "LCD_VSYNC"),
1444 STM32_FUNCTION(16, "EVENTOUT"),
1445 STM32_FUNCTION(17, "ANALOG")
1446 ),
1447 STM32_PIN(
1448 PINCTRL_PIN(138, "PI10"),
1449 STM32_FUNCTION(0, "GPIOI10"),
1450 STM32_FUNCTION(12, "ETH_MII_RX_ER"),
1451 STM32_FUNCTION(13, "FMC_D31"),
1452 STM32_FUNCTION(15, "LCD_HSYNC"),
1453 STM32_FUNCTION(16, "EVENTOUT"),
1454 STM32_FUNCTION(17, "ANALOG")
1455 ),
1456 STM32_PIN(
1457 PINCTRL_PIN(139, "PI11"),
1458 STM32_FUNCTION(0, "GPIOI11"),
1459 STM32_FUNCTION(11, "OTG_HS_ULPI_DIR"),
1460 STM32_FUNCTION(16, "EVENTOUT"),
1461 STM32_FUNCTION(17, "ANALOG")
1462 ),
1463 STM32_PIN(
1464 PINCTRL_PIN(140, "PI12"),
1465 STM32_FUNCTION(0, "GPIOI12"),
1466 STM32_FUNCTION(15, "LCD_HSYNC"),
1467 STM32_FUNCTION(16, "EVENTOUT"),
1468 STM32_FUNCTION(17, "ANALOG")
1469 ),
1470 STM32_PIN(
1471 PINCTRL_PIN(141, "PI13"),
1472 STM32_FUNCTION(0, "GPIOI13"),
1473 STM32_FUNCTION(15, "LCD_VSYNC"),
1474 STM32_FUNCTION(16, "EVENTOUT"),
1475 STM32_FUNCTION(17, "ANALOG")
1476 ),
1477 STM32_PIN(
1478 PINCTRL_PIN(142, "PI14"),
1479 STM32_FUNCTION(0, "GPIOI14"),
1480 STM32_FUNCTION(15, "LCD_CLK"),
1481 STM32_FUNCTION(16, "EVENTOUT"),
1482 STM32_FUNCTION(17, "ANALOG")
1483 ),
1484 STM32_PIN(
1485 PINCTRL_PIN(143, "PI15"),
1486 STM32_FUNCTION(0, "GPIOI15"),
1487 STM32_FUNCTION(15, "LCD_R0"),
1488 STM32_FUNCTION(16, "EVENTOUT"),
1489 STM32_FUNCTION(17, "ANALOG")
1490 ),
1491 STM32_PIN(
1492 PINCTRL_PIN(144, "PJ0"),
1493 STM32_FUNCTION(0, "GPIOJ0"),
1494 STM32_FUNCTION(15, "LCD_R1"),
1495 STM32_FUNCTION(16, "EVENTOUT"),
1496 STM32_FUNCTION(17, "ANALOG")
1497 ),
1498 STM32_PIN(
1499 PINCTRL_PIN(145, "PJ1"),
1500 STM32_FUNCTION(0, "GPIOJ1"),
1501 STM32_FUNCTION(15, "LCD_R2"),
1502 STM32_FUNCTION(16, "EVENTOUT"),
1503 STM32_FUNCTION(17, "ANALOG")
1504 ),
1505 STM32_PIN(
1506 PINCTRL_PIN(146, "PJ2"),
1507 STM32_FUNCTION(0, "GPIOJ2"),
1508 STM32_FUNCTION(15, "LCD_R3"),
1509 STM32_FUNCTION(16, "EVENTOUT"),
1510 STM32_FUNCTION(17, "ANALOG")
1511 ),
1512 STM32_PIN(
1513 PINCTRL_PIN(147, "PJ3"),
1514 STM32_FUNCTION(0, "GPIOJ3"),
1515 STM32_FUNCTION(15, "LCD_R4"),
1516 STM32_FUNCTION(16, "EVENTOUT"),
1517 STM32_FUNCTION(17, "ANALOG")
1518 ),
1519 STM32_PIN(
1520 PINCTRL_PIN(148, "PJ4"),
1521 STM32_FUNCTION(0, "GPIOJ4"),
1522 STM32_FUNCTION(15, "LCD_R5"),
1523 STM32_FUNCTION(16, "EVENTOUT"),
1524 STM32_FUNCTION(17, "ANALOG")
1525 ),
1526 STM32_PIN(
1527 PINCTRL_PIN(149, "PJ5"),
1528 STM32_FUNCTION(0, "GPIOJ5"),
1529 STM32_FUNCTION(15, "LCD_R6"),
1530 STM32_FUNCTION(16, "EVENTOUT"),
1531 STM32_FUNCTION(17, "ANALOG")
1532 ),
1533 STM32_PIN(
1534 PINCTRL_PIN(150, "PJ6"),
1535 STM32_FUNCTION(0, "GPIOJ6"),
1536 STM32_FUNCTION(15, "LCD_R7"),
1537 STM32_FUNCTION(16, "EVENTOUT"),
1538 STM32_FUNCTION(17, "ANALOG")
1539 ),
1540 STM32_PIN(
1541 PINCTRL_PIN(151, "PJ7"),
1542 STM32_FUNCTION(0, "GPIOJ7"),
1543 STM32_FUNCTION(15, "LCD_G0"),
1544 STM32_FUNCTION(16, "EVENTOUT"),
1545 STM32_FUNCTION(17, "ANALOG")
1546 ),
1547 STM32_PIN(
1548 PINCTRL_PIN(152, "PJ8"),
1549 STM32_FUNCTION(0, "GPIOJ8"),
1550 STM32_FUNCTION(15, "LCD_G1"),
1551 STM32_FUNCTION(16, "EVENTOUT"),
1552 STM32_FUNCTION(17, "ANALOG")
1553 ),
1554 STM32_PIN(
1555 PINCTRL_PIN(153, "PJ9"),
1556 STM32_FUNCTION(0, "GPIOJ9"),
1557 STM32_FUNCTION(15, "LCD_G2"),
1558 STM32_FUNCTION(16, "EVENTOUT"),
1559 STM32_FUNCTION(17, "ANALOG")
1560 ),
1561 STM32_PIN(
1562 PINCTRL_PIN(154, "PJ10"),
1563 STM32_FUNCTION(0, "GPIOJ10"),
1564 STM32_FUNCTION(15, "LCD_G3"),
1565 STM32_FUNCTION(16, "EVENTOUT"),
1566 STM32_FUNCTION(17, "ANALOG")
1567 ),
1568 STM32_PIN(
1569 PINCTRL_PIN(155, "PJ11"),
1570 STM32_FUNCTION(0, "GPIOJ11"),
1571 STM32_FUNCTION(15, "LCD_G4"),
1572 STM32_FUNCTION(16, "EVENTOUT"),
1573 STM32_FUNCTION(17, "ANALOG")
1574 ),
1575 STM32_PIN(
1576 PINCTRL_PIN(156, "PJ12"),
1577 STM32_FUNCTION(0, "GPIOJ12"),
1578 STM32_FUNCTION(15, "LCD_B0"),
1579 STM32_FUNCTION(16, "EVENTOUT"),
1580 STM32_FUNCTION(17, "ANALOG")
1581 ),
1582 STM32_PIN(
1583 PINCTRL_PIN(157, "PJ13"),
1584 STM32_FUNCTION(0, "GPIOJ13"),
1585 STM32_FUNCTION(15, "LCD_B1"),
1586 STM32_FUNCTION(16, "EVENTOUT"),
1587 STM32_FUNCTION(17, "ANALOG")
1588 ),
1589 STM32_PIN(
1590 PINCTRL_PIN(158, "PJ14"),
1591 STM32_FUNCTION(0, "GPIOJ14"),
1592 STM32_FUNCTION(15, "LCD_B2"),
1593 STM32_FUNCTION(16, "EVENTOUT"),
1594 STM32_FUNCTION(17, "ANALOG")
1595 ),
1596 STM32_PIN(
1597 PINCTRL_PIN(159, "PJ15"),
1598 STM32_FUNCTION(0, "GPIOJ15"),
1599 STM32_FUNCTION(15, "LCD_B3"),
1600 STM32_FUNCTION(16, "EVENTOUT"),
1601 STM32_FUNCTION(17, "ANALOG")
1602 ),
1603 STM32_PIN(
1604 PINCTRL_PIN(160, "PK0"),
1605 STM32_FUNCTION(0, "GPIOK0"),
1606 STM32_FUNCTION(15, "LCD_G5"),
1607 STM32_FUNCTION(16, "EVENTOUT"),
1608 STM32_FUNCTION(17, "ANALOG")
1609 ),
1610 STM32_PIN(
1611 PINCTRL_PIN(161, "PK1"),
1612 STM32_FUNCTION(0, "GPIOK1"),
1613 STM32_FUNCTION(15, "LCD_G6"),
1614 STM32_FUNCTION(16, "EVENTOUT"),
1615 STM32_FUNCTION(17, "ANALOG")
1616 ),
1617 STM32_PIN(
1618 PINCTRL_PIN(162, "PK2"),
1619 STM32_FUNCTION(0, "GPIOK2"),
1620 STM32_FUNCTION(15, "LCD_G7"),
1621 STM32_FUNCTION(16, "EVENTOUT"),
1622 STM32_FUNCTION(17, "ANALOG")
1623 ),
1624 STM32_PIN(
1625 PINCTRL_PIN(163, "PK3"),
1626 STM32_FUNCTION(0, "GPIOK3"),
1627 STM32_FUNCTION(15, "LCD_B4"),
1628 STM32_FUNCTION(16, "EVENTOUT"),
1629 STM32_FUNCTION(17, "ANALOG")
1630 ),
1631 STM32_PIN(
1632 PINCTRL_PIN(164, "PK4"),
1633 STM32_FUNCTION(0, "GPIOK4"),
1634 STM32_FUNCTION(15, "LCD_B5"),
1635 STM32_FUNCTION(16, "EVENTOUT"),
1636 STM32_FUNCTION(17, "ANALOG")
1637 ),
1638 STM32_PIN(
1639 PINCTRL_PIN(165, "PK5"),
1640 STM32_FUNCTION(0, "GPIOK5"),
1641 STM32_FUNCTION(15, "LCD_B6"),
1642 STM32_FUNCTION(16, "EVENTOUT"),
1643 STM32_FUNCTION(17, "ANALOG")
1644 ),
1645 STM32_PIN(
1646 PINCTRL_PIN(166, "PK6"),
1647 STM32_FUNCTION(0, "GPIOK6"),
1648 STM32_FUNCTION(15, "LCD_B7"),
1649 STM32_FUNCTION(16, "EVENTOUT"),
1650 STM32_FUNCTION(17, "ANALOG")
1651 ),
1652 STM32_PIN(
1653 PINCTRL_PIN(167, "PK7"),
1654 STM32_FUNCTION(0, "GPIOK7"),
1655 STM32_FUNCTION(15, "LCD_DE"),
1656 STM32_FUNCTION(16, "EVENTOUT"),
1657 STM32_FUNCTION(17, "ANALOG")
1658 ),
1659};
1660
1661static struct stm32_pinctrl_match_data stm32f746_match_data = {
1662 .pins = stm32f746_pins,
1663 .npins = ARRAY_SIZE(stm32f746_pins),
1664};
1665
1666static const struct of_device_id stm32f746_pctrl_match[] = {
1667 {
1668 .compatible = "st,stm32f746-pinctrl",
1669 .data = &stm32f746_match_data,
1670 },
1671 { }
1672};
1673
1674static struct platform_driver stm32f746_pinctrl_driver = {
1675 .probe = stm32_pctl_probe,
1676 .driver = {
1677 .name = "stm32f746-pinctrl",
1678 .of_match_table = stm32f746_pctrl_match,
1679 },
1680};
1681builtin_platform_driver(stm32f746_pinctrl_driver);
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c
index 55083d278bb1..ce483b03a263 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c
@@ -180,17 +180,17 @@ static const struct sunxi_desc_pin sun8i_a23_pins[] = {
180 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 180 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14),
181 SUNXI_FUNCTION(0x0, "gpio_in"), 181 SUNXI_FUNCTION(0x0, "gpio_in"),
182 SUNXI_FUNCTION(0x1, "gpio_out"), 182 SUNXI_FUNCTION(0x1, "gpio_out"),
183 SUNXI_FUNCTION(0x2, "nand"), /* DQ6 */ 183 SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */
184 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 184 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */
185 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 185 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15),
186 SUNXI_FUNCTION(0x0, "gpio_in"), 186 SUNXI_FUNCTION(0x0, "gpio_in"),
187 SUNXI_FUNCTION(0x1, "gpio_out"), 187 SUNXI_FUNCTION(0x1, "gpio_out"),
188 SUNXI_FUNCTION(0x2, "nand"), /* DQ7 */ 188 SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */
189 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 189 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */
190 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 190 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16),
191 SUNXI_FUNCTION(0x0, "gpio_in"), 191 SUNXI_FUNCTION(0x0, "gpio_in"),
192 SUNXI_FUNCTION(0x1, "gpio_out"), 192 SUNXI_FUNCTION(0x1, "gpio_out"),
193 SUNXI_FUNCTION(0x2, "nand"), /* DQS */ 193 SUNXI_FUNCTION(0x2, "nand0"), /* DQS */
194 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 194 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */
195 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 17), 195 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 17),
196 SUNXI_FUNCTION(0x0, "gpio_in"), 196 SUNXI_FUNCTION(0x0, "gpio_in"),
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
index 8b381d69df86..3040abe6f73a 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
@@ -140,17 +140,17 @@ static const struct sunxi_desc_pin sun8i_a33_pins[] = {
140 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 140 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14),
141 SUNXI_FUNCTION(0x0, "gpio_in"), 141 SUNXI_FUNCTION(0x0, "gpio_in"),
142 SUNXI_FUNCTION(0x1, "gpio_out"), 142 SUNXI_FUNCTION(0x1, "gpio_out"),
143 SUNXI_FUNCTION(0x2, "nand"), /* DQ6 */ 143 SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */
144 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 144 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */
145 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 145 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15),
146 SUNXI_FUNCTION(0x0, "gpio_in"), 146 SUNXI_FUNCTION(0x0, "gpio_in"),
147 SUNXI_FUNCTION(0x1, "gpio_out"), 147 SUNXI_FUNCTION(0x1, "gpio_out"),
148 SUNXI_FUNCTION(0x2, "nand"), /* DQ7 */ 148 SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */
149 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 149 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */
150 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 150 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16),
151 SUNXI_FUNCTION(0x0, "gpio_in"), 151 SUNXI_FUNCTION(0x0, "gpio_in"),
152 SUNXI_FUNCTION(0x1, "gpio_out"), 152 SUNXI_FUNCTION(0x1, "gpio_out"),
153 SUNXI_FUNCTION(0x2, "nand"), /* DQS */ 153 SUNXI_FUNCTION(0x2, "nand0"), /* DQS */
154 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 154 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */
155 /* Hole */ 155 /* Hole */
156 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2), 156 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
index 11760bbe9d51..26a2ad3b651f 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
@@ -219,17 +219,17 @@ static const struct sunxi_desc_pin sun8i_h3_pins[] = {
219 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 219 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14),
220 SUNXI_FUNCTION(0x0, "gpio_in"), 220 SUNXI_FUNCTION(0x0, "gpio_in"),
221 SUNXI_FUNCTION(0x1, "gpio_out"), 221 SUNXI_FUNCTION(0x1, "gpio_out"),
222 SUNXI_FUNCTION(0x2, "nand"), /* DQ6 */ 222 SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */
223 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 223 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */
224 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 224 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15),
225 SUNXI_FUNCTION(0x0, "gpio_in"), 225 SUNXI_FUNCTION(0x0, "gpio_in"),
226 SUNXI_FUNCTION(0x1, "gpio_out"), 226 SUNXI_FUNCTION(0x1, "gpio_out"),
227 SUNXI_FUNCTION(0x2, "nand"), /* DQ7 */ 227 SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */
228 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 228 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */
229 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 229 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16),
230 SUNXI_FUNCTION(0x0, "gpio_in"), 230 SUNXI_FUNCTION(0x0, "gpio_in"),
231 SUNXI_FUNCTION(0x1, "gpio_out"), 231 SUNXI_FUNCTION(0x1, "gpio_out"),
232 SUNXI_FUNCTION(0x2, "nand"), /* DQS */ 232 SUNXI_FUNCTION(0x2, "nand0"), /* DQS */
233 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 233 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */
234 /* Hole */ 234 /* Hole */
235 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0), 235 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.c b/drivers/pinctrl/tegra/pinctrl-tegra.c
index 6e82b290cb4f..277622b4b6fb 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra.c
@@ -632,11 +632,11 @@ static void tegra_pinctrl_clear_parked_bits(struct tegra_pmx *pmx)
632 u32 val; 632 u32 val;
633 633
634 for (i = 0; i < pmx->soc->ngroups; ++i) { 634 for (i = 0; i < pmx->soc->ngroups; ++i) {
635 if (pmx->soc->groups[i].parked_reg >= 0) { 635 g = &pmx->soc->groups[i];
636 g = &pmx->soc->groups[i]; 636 if (g->parked_bit >= 0) {
637 val = pmx_readl(pmx, g->parked_bank, g->parked_reg); 637 val = pmx_readl(pmx, g->mux_bank, g->mux_reg);
638 val &= ~(1 << g->parked_bit); 638 val &= ~(1 << g->parked_bit);
639 pmx_writel(pmx, val, g->parked_bank, g->parked_reg); 639 pmx_writel(pmx, val, g->mux_bank, g->mux_reg);
640 } 640 }
641 } 641 }
642} 642}
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra.h b/drivers/pinctrl/tegra/pinctrl-tegra.h
index d2ced17382b5..33b17cb1471e 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra.h
+++ b/drivers/pinctrl/tegra/pinctrl-tegra.h
@@ -93,9 +93,7 @@ struct tegra_function {
93 * @tri_reg: Tri-state register offset. 93 * @tri_reg: Tri-state register offset.
94 * @tri_bank: Tri-state register bank. 94 * @tri_bank: Tri-state register bank.
95 * @tri_bit: Tri-state register bit. 95 * @tri_bit: Tri-state register bit.
96 * @parked_reg: Parked register offset. -1 if unsupported. 96 * @parked_bit: Parked register bit. -1 if unsupported.
97 * @parked_bank: Parked register bank. 0 if unsupported.
98 * @parked_bit: Parked register bit. 0 if unsupported.
99 * @einput_bit: Enable-input register bit. 97 * @einput_bit: Enable-input register bit.
100 * @odrain_bit: Open-drain register bit. 98 * @odrain_bit: Open-drain register bit.
101 * @lock_bit: Lock register bit. 99 * @lock_bit: Lock register bit.
@@ -138,12 +136,10 @@ struct tegra_pingroup {
138 s16 pupd_reg; 136 s16 pupd_reg;
139 s16 tri_reg; 137 s16 tri_reg;
140 s16 drv_reg; 138 s16 drv_reg;
141 s16 parked_reg;
142 u32 mux_bank:2; 139 u32 mux_bank:2;
143 u32 pupd_bank:2; 140 u32 pupd_bank:2;
144 u32 tri_bank:2; 141 u32 tri_bank:2;
145 u32 drv_bank:2; 142 u32 drv_bank:2;
146 u32 parked_bank:2;
147 s32 mux_bit:6; 143 s32 mux_bit:6;
148 s32 pupd_bit:6; 144 s32 pupd_bit:6;
149 s32 tri_bit:6; 145 s32 tri_bit:6;
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra114.c b/drivers/pinctrl/tegra/pinctrl-tegra114.c
index 4851d169f4c7..952132ce5ea0 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra114.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra114.c
@@ -1578,7 +1578,7 @@ static struct tegra_function tegra114_functions[] = {
1578 .lock_bit = 7, \ 1578 .lock_bit = 7, \
1579 .ioreset_bit = PINGROUP_BIT_##ior(8), \ 1579 .ioreset_bit = PINGROUP_BIT_##ior(8), \
1580 .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ 1580 .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \
1581 .parked_reg = -1, \ 1581 .parked_bit = -1, \
1582 .drv_reg = -1, \ 1582 .drv_reg = -1, \
1583 } 1583 }
1584 1584
@@ -1599,7 +1599,7 @@ static struct tegra_function tegra114_functions[] = {
1599 .rcv_sel_bit = -1, \ 1599 .rcv_sel_bit = -1, \
1600 .drv_reg = DRV_PINGROUP_REG(r), \ 1600 .drv_reg = DRV_PINGROUP_REG(r), \
1601 .drv_bank = 0, \ 1601 .drv_bank = 0, \
1602 .parked_reg = -1, \ 1602 .parked_bit = -1, \
1603 .hsm_bit = hsm_b, \ 1603 .hsm_bit = hsm_b, \
1604 .schmitt_bit = schmitt_b, \ 1604 .schmitt_bit = schmitt_b, \
1605 .lpmd_bit = lpmd_b, \ 1605 .lpmd_bit = lpmd_b, \
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra124.c b/drivers/pinctrl/tegra/pinctrl-tegra124.c
index a0ce723a9482..bca239e3ae50 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra124.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra124.c
@@ -1747,7 +1747,7 @@ static struct tegra_function tegra124_functions[] = {
1747 .lock_bit = 7, \ 1747 .lock_bit = 7, \
1748 .ioreset_bit = PINGROUP_BIT_##ior(8), \ 1748 .ioreset_bit = PINGROUP_BIT_##ior(8), \
1749 .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ 1749 .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \
1750 .parked_reg = -1, \ 1750 .parked_bit = -1, \
1751 .drv_reg = -1, \ 1751 .drv_reg = -1, \
1752 } 1752 }
1753 1753
@@ -1768,7 +1768,7 @@ static struct tegra_function tegra124_functions[] = {
1768 .rcv_sel_bit = -1, \ 1768 .rcv_sel_bit = -1, \
1769 .drv_reg = DRV_PINGROUP_REG(r), \ 1769 .drv_reg = DRV_PINGROUP_REG(r), \
1770 .drv_bank = 0, \ 1770 .drv_bank = 0, \
1771 .parked_reg = -1, \ 1771 .parked_bit = -1, \
1772 .hsm_bit = hsm_b, \ 1772 .hsm_bit = hsm_b, \
1773 .schmitt_bit = schmitt_b, \ 1773 .schmitt_bit = schmitt_b, \
1774 .lpmd_bit = lpmd_b, \ 1774 .lpmd_bit = lpmd_b, \
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra20.c b/drivers/pinctrl/tegra/pinctrl-tegra20.c
index 09bad6980ad1..ad62451a5a9b 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra20.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra20.c
@@ -1994,7 +1994,7 @@ static struct tegra_function tegra20_functions[] = {
1994 .tri_reg = ((tri_r) - TRISTATE_REG_A), \ 1994 .tri_reg = ((tri_r) - TRISTATE_REG_A), \
1995 .tri_bank = 0, \ 1995 .tri_bank = 0, \
1996 .tri_bit = tri_b, \ 1996 .tri_bit = tri_b, \
1997 .parked_reg = -1, \ 1997 .parked_bit = -1, \
1998 .einput_bit = -1, \ 1998 .einput_bit = -1, \
1999 .odrain_bit = -1, \ 1999 .odrain_bit = -1, \
2000 .lock_bit = -1, \ 2000 .lock_bit = -1, \
@@ -2014,7 +2014,7 @@ static struct tegra_function tegra20_functions[] = {
2014 .pupd_bank = 2, \ 2014 .pupd_bank = 2, \
2015 .pupd_bit = pupd_b, \ 2015 .pupd_bit = pupd_b, \
2016 .drv_reg = -1, \ 2016 .drv_reg = -1, \
2017 .parked_reg = -1, \ 2017 .parked_bit = -1, \
2018 } 2018 }
2019 2019
2020/* Pin groups for drive strength registers (configurable version) */ 2020/* Pin groups for drive strength registers (configurable version) */
@@ -2030,7 +2030,7 @@ static struct tegra_function tegra20_functions[] = {
2030 .tri_reg = -1, \ 2030 .tri_reg = -1, \
2031 .drv_reg = ((r) - PINGROUP_REG_A), \ 2031 .drv_reg = ((r) - PINGROUP_REG_A), \
2032 .drv_bank = 3, \ 2032 .drv_bank = 3, \
2033 .parked_reg = -1, \ 2033 .parked_bit = -1, \
2034 .hsm_bit = hsm_b, \ 2034 .hsm_bit = hsm_b, \
2035 .schmitt_bit = schmitt_b, \ 2035 .schmitt_bit = schmitt_b, \
2036 .lpmd_bit = lpmd_b, \ 2036 .lpmd_bit = lpmd_b, \
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra210.c b/drivers/pinctrl/tegra/pinctrl-tegra210.c
index 2d856af389ef..2b70e93da9db 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra210.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra210.c
@@ -1310,8 +1310,6 @@ static struct tegra_function tegra210_functions[] = {
1310 .lock_bit = 7, \ 1310 .lock_bit = 7, \
1311 .ioreset_bit = -1, \ 1311 .ioreset_bit = -1, \
1312 .rcv_sel_bit = PINGROUP_BIT_##e_io_hv(10), \ 1312 .rcv_sel_bit = PINGROUP_BIT_##e_io_hv(10), \
1313 .parked_reg = PINGROUP_REG(r), \
1314 .parked_bank = 1, \
1315 .parked_bit = 5, \ 1313 .parked_bit = 5, \
1316 .hsm_bit = PINGROUP_BIT_##hsm(9), \ 1314 .hsm_bit = PINGROUP_BIT_##hsm(9), \
1317 .schmitt_bit = 12, \ 1315 .schmitt_bit = 12, \
@@ -1345,7 +1343,7 @@ static struct tegra_function tegra210_functions[] = {
1345 .rcv_sel_bit = -1, \ 1343 .rcv_sel_bit = -1, \
1346 .drv_reg = DRV_PINGROUP_REG(r), \ 1344 .drv_reg = DRV_PINGROUP_REG(r), \
1347 .drv_bank = 0, \ 1345 .drv_bank = 0, \
1348 .parked_reg = -1, \ 1346 .parked_bit = -1, \
1349 .hsm_bit = -1, \ 1347 .hsm_bit = -1, \
1350 .schmitt_bit = -1, \ 1348 .schmitt_bit = -1, \
1351 .lpmd_bit = -1, \ 1349 .lpmd_bit = -1, \
diff --git a/drivers/pinctrl/tegra/pinctrl-tegra30.c b/drivers/pinctrl/tegra/pinctrl-tegra30.c
index fb7817fea2d9..474ac6daf513 100644
--- a/drivers/pinctrl/tegra/pinctrl-tegra30.c
+++ b/drivers/pinctrl/tegra/pinctrl-tegra30.c
@@ -2139,7 +2139,7 @@ static struct tegra_function tegra30_functions[] = {
2139 .lock_bit = 7, \ 2139 .lock_bit = 7, \
2140 .ioreset_bit = PINGROUP_BIT_##ior(8), \ 2140 .ioreset_bit = PINGROUP_BIT_##ior(8), \
2141 .rcv_sel_bit = -1, \ 2141 .rcv_sel_bit = -1, \
2142 .parked_reg = -1, \ 2142 .parked_bit = -1, \
2143 .drv_reg = -1, \ 2143 .drv_reg = -1, \
2144 } 2144 }
2145 2145
@@ -2160,7 +2160,7 @@ static struct tegra_function tegra30_functions[] = {
2160 .rcv_sel_bit = -1, \ 2160 .rcv_sel_bit = -1, \
2161 .drv_reg = DRV_PINGROUP_REG(r), \ 2161 .drv_reg = DRV_PINGROUP_REG(r), \
2162 .drv_bank = 0, \ 2162 .drv_bank = 0, \
2163 .parked_reg = -1, \ 2163 .parked_bit = -1, \
2164 .hsm_bit = hsm_b, \ 2164 .hsm_bit = hsm_b, \
2165 .schmitt_bit = schmitt_b, \ 2165 .schmitt_bit = schmitt_b, \
2166 .lpmd_bit = lpmd_b, \ 2166 .lpmd_bit = lpmd_b, \
diff --git a/drivers/pinctrl/uniphier/Kconfig b/drivers/pinctrl/uniphier/Kconfig
index 0b40ded5738f..e077a9ec23d9 100644
--- a/drivers/pinctrl/uniphier/Kconfig
+++ b/drivers/pinctrl/uniphier/Kconfig
@@ -10,26 +10,34 @@ if PINCTRL_UNIPHIER
10 10
11config PINCTRL_UNIPHIER_LD4 11config PINCTRL_UNIPHIER_LD4
12 tristate "UniPhier PH1-LD4 SoC pinctrl driver" 12 tristate "UniPhier PH1-LD4 SoC pinctrl driver"
13 default y 13 default ARM
14 14
15config PINCTRL_UNIPHIER_PRO4 15config PINCTRL_UNIPHIER_PRO4
16 tristate "UniPhier PH1-Pro4 SoC pinctrl driver" 16 tristate "UniPhier PH1-Pro4 SoC pinctrl driver"
17 default y 17 default ARM
18 18
19config PINCTRL_UNIPHIER_SLD8 19config PINCTRL_UNIPHIER_SLD8
20 tristate "UniPhier PH1-sLD8 SoC pinctrl driver" 20 tristate "UniPhier PH1-sLD8 SoC pinctrl driver"
21 default y 21 default ARM
22 22
23config PINCTRL_UNIPHIER_PRO5 23config PINCTRL_UNIPHIER_PRO5
24 tristate "UniPhier PH1-Pro5 SoC pinctrl driver" 24 tristate "UniPhier PH1-Pro5 SoC pinctrl driver"
25 default y 25 default ARM
26 26
27config PINCTRL_UNIPHIER_PXS2 27config PINCTRL_UNIPHIER_PXS2
28 tristate "UniPhier ProXstream2 SoC pinctrl driver" 28 tristate "UniPhier ProXstream2 SoC pinctrl driver"
29 default y 29 default ARM
30 30
31config PINCTRL_UNIPHIER_LD6B 31config PINCTRL_UNIPHIER_LD6B
32 tristate "UniPhier PH1-LD6b SoC pinctrl driver" 32 tristate "UniPhier PH1-LD6b SoC pinctrl driver"
33 default y 33 default ARM
34
35config PINCTRL_UNIPHIER_LD11
36 tristate "UniPhier PH1-LD11 SoC pinctrl driver"
37 default ARM64
38
39config PINCTRL_UNIPHIER_LD20
40 tristate "UniPhier PH1-LD20 SoC pinctrl driver"
41 default ARM64
34 42
35endif 43endif
diff --git a/drivers/pinctrl/uniphier/Makefile b/drivers/pinctrl/uniphier/Makefile
index 3b8f9ee0bb6f..9f4bc8aa6f68 100644
--- a/drivers/pinctrl/uniphier/Makefile
+++ b/drivers/pinctrl/uniphier/Makefile
@@ -6,3 +6,5 @@ obj-$(CONFIG_PINCTRL_UNIPHIER_SLD8) += pinctrl-uniphier-sld8.o
6obj-$(CONFIG_PINCTRL_UNIPHIER_PRO5) += pinctrl-uniphier-pro5.o 6obj-$(CONFIG_PINCTRL_UNIPHIER_PRO5) += pinctrl-uniphier-pro5.o
7obj-$(CONFIG_PINCTRL_UNIPHIER_PXS2) += pinctrl-uniphier-pxs2.o 7obj-$(CONFIG_PINCTRL_UNIPHIER_PXS2) += pinctrl-uniphier-pxs2.o
8obj-$(CONFIG_PINCTRL_UNIPHIER_LD6B) += pinctrl-uniphier-ld6b.o 8obj-$(CONFIG_PINCTRL_UNIPHIER_LD6B) += pinctrl-uniphier-ld6b.o
9obj-$(CONFIG_PINCTRL_UNIPHIER_LD11) += pinctrl-uniphier-ld11.o
10obj-$(CONFIG_PINCTRL_UNIPHIER_LD20) += pinctrl-uniphier-ld20.o
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
index 967400971d45..9b2ee717bccc 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
@@ -14,6 +14,7 @@
14 14
15#include <linux/export.h> 15#include <linux/export.h>
16#include <linux/mfd/syscon.h> 16#include <linux/mfd/syscon.h>
17#include <linux/of.h>
17#include <linux/pinctrl/pinconf.h> 18#include <linux/pinctrl/pinconf.h>
18#include <linux/pinctrl/pinconf-generic.h> 19#include <linux/pinctrl/pinconf-generic.h>
19#include <linux/pinctrl/pinctrl.h> 20#include <linux/pinctrl/pinctrl.h>
@@ -26,8 +27,10 @@
26#include "pinctrl-uniphier.h" 27#include "pinctrl-uniphier.h"
27 28
28struct uniphier_pinctrl_priv { 29struct uniphier_pinctrl_priv {
30 struct pinctrl_desc pctldesc;
29 struct pinctrl_dev *pctldev; 31 struct pinctrl_dev *pctldev;
30 struct regmap *regmap; 32 struct regmap *regmap;
33 unsigned int regbase;
31 struct uniphier_pinctrl_socdata *socdata; 34 struct uniphier_pinctrl_socdata *socdata;
32}; 35};
33 36
@@ -63,16 +66,22 @@ static int uniphier_pctl_get_group_pins(struct pinctrl_dev *pctldev,
63static void uniphier_pctl_pin_dbg_show(struct pinctrl_dev *pctldev, 66static void uniphier_pctl_pin_dbg_show(struct pinctrl_dev *pctldev,
64 struct seq_file *s, unsigned offset) 67 struct seq_file *s, unsigned offset)
65{ 68{
66 const struct pinctrl_pin_desc *pin = &pctldev->desc->pins[offset]; 69 const struct pin_desc *desc = pin_desc_get(pctldev, offset);
67 const char *pull_dir, *drv_str; 70 const char *pull_dir, *drv_type;
68 71
69 switch (uniphier_pin_get_pull_dir(pin->drv_data)) { 72 switch (uniphier_pin_get_pull_dir(desc->drv_data)) {
70 case UNIPHIER_PIN_PULL_UP: 73 case UNIPHIER_PIN_PULL_UP:
71 pull_dir = "UP"; 74 pull_dir = "UP";
72 break; 75 break;
73 case UNIPHIER_PIN_PULL_DOWN: 76 case UNIPHIER_PIN_PULL_DOWN:
74 pull_dir = "DOWN"; 77 pull_dir = "DOWN";
75 break; 78 break;
79 case UNIPHIER_PIN_PULL_UP_FIXED:
80 pull_dir = "UP(FIXED)";
81 break;
82 case UNIPHIER_PIN_PULL_DOWN_FIXED:
83 pull_dir = "DOWN(FIXED)";
84 break;
76 case UNIPHIER_PIN_PULL_NONE: 85 case UNIPHIER_PIN_PULL_NONE:
77 pull_dir = "NONE"; 86 pull_dir = "NONE";
78 break; 87 break;
@@ -80,30 +89,33 @@ static void uniphier_pctl_pin_dbg_show(struct pinctrl_dev *pctldev,
80 BUG(); 89 BUG();
81 } 90 }
82 91
83 switch (uniphier_pin_get_drv_str(pin->drv_data)) { 92 switch (uniphier_pin_get_drv_type(desc->drv_data)) {
84 case UNIPHIER_PIN_DRV_4_8: 93 case UNIPHIER_PIN_DRV_1BIT:
85 drv_str = "4/8(mA)"; 94 drv_type = "4/8(mA)";
95 break;
96 case UNIPHIER_PIN_DRV_2BIT:
97 drv_type = "8/12/16/20(mA)";
86 break; 98 break;
87 case UNIPHIER_PIN_DRV_8_12_16_20: 99 case UNIPHIER_PIN_DRV_3BIT:
88 drv_str = "8/12/16/20(mA)"; 100 drv_type = "4/5/7/9/11/12/14/16(mA)";
89 break; 101 break;
90 case UNIPHIER_PIN_DRV_FIXED_4: 102 case UNIPHIER_PIN_DRV_FIXED4:
91 drv_str = "4(mA)"; 103 drv_type = "4(mA)";
92 break; 104 break;
93 case UNIPHIER_PIN_DRV_FIXED_5: 105 case UNIPHIER_PIN_DRV_FIXED5:
94 drv_str = "5(mA)"; 106 drv_type = "5(mA)";
95 break; 107 break;
96 case UNIPHIER_PIN_DRV_FIXED_8: 108 case UNIPHIER_PIN_DRV_FIXED8:
97 drv_str = "8(mA)"; 109 drv_type = "8(mA)";
98 break; 110 break;
99 case UNIPHIER_PIN_DRV_NONE: 111 case UNIPHIER_PIN_DRV_NONE:
100 drv_str = "NONE"; 112 drv_type = "NONE";
101 break; 113 break;
102 default: 114 default:
103 BUG(); 115 BUG();
104 } 116 }
105 117
106 seq_printf(s, " PULL_DIR=%s DRV_STR=%s", pull_dir, drv_str); 118 seq_printf(s, " PULL_DIR=%s DRV_TYPE=%s", pull_dir, drv_type);
107} 119}
108#endif 120#endif
109 121
@@ -119,12 +131,12 @@ static const struct pinctrl_ops uniphier_pctlops = {
119}; 131};
120 132
121static int uniphier_conf_pin_bias_get(struct pinctrl_dev *pctldev, 133static int uniphier_conf_pin_bias_get(struct pinctrl_dev *pctldev,
122 const struct pinctrl_pin_desc *pin, 134 const struct pin_desc *desc,
123 enum pin_config_param param) 135 enum pin_config_param param)
124{ 136{
125 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 137 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
126 enum uniphier_pin_pull_dir pull_dir = 138 enum uniphier_pin_pull_dir pull_dir =
127 uniphier_pin_get_pull_dir(pin->drv_data); 139 uniphier_pin_get_pull_dir(desc->drv_data);
128 unsigned int pupdctrl, reg, shift, val; 140 unsigned int pupdctrl, reg, shift, val;
129 unsigned int expected = 1; 141 unsigned int expected = 1;
130 int ret; 142 int ret;
@@ -154,12 +166,12 @@ static int uniphier_conf_pin_bias_get(struct pinctrl_dev *pctldev,
154 BUG(); 166 BUG();
155 } 167 }
156 168
157 pupdctrl = uniphier_pin_get_pupdctrl(pin->drv_data); 169 pupdctrl = uniphier_pin_get_pupdctrl(desc->drv_data);
158 170
159 reg = UNIPHIER_PINCTRL_PUPDCTRL_BASE + pupdctrl / 32 * 4; 171 reg = UNIPHIER_PINCTRL_PUPDCTRL_BASE + pupdctrl / 32 * 4;
160 shift = pupdctrl % 32; 172 shift = pupdctrl % 32;
161 173
162 ret = regmap_read(priv->regmap, reg, &val); 174 ret = regmap_read(priv->regmap, priv->regbase + reg, &val);
163 if (ret) 175 if (ret)
164 return ret; 176 return ret;
165 177
@@ -169,34 +181,42 @@ static int uniphier_conf_pin_bias_get(struct pinctrl_dev *pctldev,
169} 181}
170 182
171static int uniphier_conf_pin_drive_get(struct pinctrl_dev *pctldev, 183static int uniphier_conf_pin_drive_get(struct pinctrl_dev *pctldev,
172 const struct pinctrl_pin_desc *pin, 184 const struct pin_desc *desc,
173 u16 *strength) 185 u16 *strength)
174{ 186{
175 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 187 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
176 enum uniphier_pin_drv_str drv_str = 188 enum uniphier_pin_drv_type type =
177 uniphier_pin_get_drv_str(pin->drv_data); 189 uniphier_pin_get_drv_type(desc->drv_data);
178 const unsigned int strength_4_8[] = {4, 8}; 190 const unsigned int strength_1bit[] = {4, 8};
179 const unsigned int strength_8_12_16_20[] = {8, 12, 16, 20}; 191 const unsigned int strength_2bit[] = {8, 12, 16, 20};
192 const unsigned int strength_3bit[] = {4, 5, 7, 9, 11, 12, 14, 16};
180 const unsigned int *supported_strength; 193 const unsigned int *supported_strength;
181 unsigned int drvctrl, reg, shift, mask, width, val; 194 unsigned int drvctrl, reg, shift, mask, width, val;
182 int ret; 195 int ret;
183 196
184 switch (drv_str) { 197 switch (type) {
185 case UNIPHIER_PIN_DRV_4_8: 198 case UNIPHIER_PIN_DRV_1BIT:
186 supported_strength = strength_4_8; 199 supported_strength = strength_1bit;
200 reg = UNIPHIER_PINCTRL_DRVCTRL_BASE;
187 width = 1; 201 width = 1;
188 break; 202 break;
189 case UNIPHIER_PIN_DRV_8_12_16_20: 203 case UNIPHIER_PIN_DRV_2BIT:
190 supported_strength = strength_8_12_16_20; 204 supported_strength = strength_2bit;
205 reg = UNIPHIER_PINCTRL_DRV2CTRL_BASE;
191 width = 2; 206 width = 2;
192 break; 207 break;
193 case UNIPHIER_PIN_DRV_FIXED_4: 208 case UNIPHIER_PIN_DRV_3BIT:
209 supported_strength = strength_3bit;
210 reg = UNIPHIER_PINCTRL_DRV3CTRL_BASE;
211 width = 4;
212 break;
213 case UNIPHIER_PIN_DRV_FIXED4:
194 *strength = 4; 214 *strength = 4;
195 return 0; 215 return 0;
196 case UNIPHIER_PIN_DRV_FIXED_5: 216 case UNIPHIER_PIN_DRV_FIXED5:
197 *strength = 5; 217 *strength = 5;
198 return 0; 218 return 0;
199 case UNIPHIER_PIN_DRV_FIXED_8: 219 case UNIPHIER_PIN_DRV_FIXED8:
200 *strength = 8; 220 *strength = 8;
201 return 0; 221 return 0;
202 default: 222 default:
@@ -204,17 +224,14 @@ static int uniphier_conf_pin_drive_get(struct pinctrl_dev *pctldev,
204 return -EINVAL; 224 return -EINVAL;
205 } 225 }
206 226
207 drvctrl = uniphier_pin_get_drvctrl(pin->drv_data); 227 drvctrl = uniphier_pin_get_drvctrl(desc->drv_data);
208 drvctrl *= width; 228 drvctrl *= width;
209 229
210 reg = (width == 2) ? UNIPHIER_PINCTRL_DRV2CTRL_BASE :
211 UNIPHIER_PINCTRL_DRVCTRL_BASE;
212
213 reg += drvctrl / 32 * 4; 230 reg += drvctrl / 32 * 4;
214 shift = drvctrl % 32; 231 shift = drvctrl % 32;
215 mask = (1U << width) - 1; 232 mask = (1U << width) - 1;
216 233
217 ret = regmap_read(priv->regmap, reg, &val); 234 ret = regmap_read(priv->regmap, priv->regbase + reg, &val);
218 if (ret) 235 if (ret)
219 return ret; 236 return ret;
220 237
@@ -224,10 +241,10 @@ static int uniphier_conf_pin_drive_get(struct pinctrl_dev *pctldev,
224} 241}
225 242
226static int uniphier_conf_pin_input_enable_get(struct pinctrl_dev *pctldev, 243static int uniphier_conf_pin_input_enable_get(struct pinctrl_dev *pctldev,
227 const struct pinctrl_pin_desc *pin) 244 const struct pin_desc *desc)
228{ 245{
229 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 246 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
230 unsigned int iectrl = uniphier_pin_get_iectrl(pin->drv_data); 247 unsigned int iectrl = uniphier_pin_get_iectrl(desc->drv_data);
231 unsigned int val; 248 unsigned int val;
232 int ret; 249 int ret;
233 250
@@ -235,7 +252,8 @@ static int uniphier_conf_pin_input_enable_get(struct pinctrl_dev *pctldev,
235 /* This pin is always input-enabled. */ 252 /* This pin is always input-enabled. */
236 return 0; 253 return 0;
237 254
238 ret = regmap_read(priv->regmap, UNIPHIER_PINCTRL_IECTRL, &val); 255 ret = regmap_read(priv->regmap,
256 priv->regbase + UNIPHIER_PINCTRL_IECTRL, &val);
239 if (ret) 257 if (ret)
240 return ret; 258 return ret;
241 259
@@ -246,7 +264,7 @@ static int uniphier_conf_pin_config_get(struct pinctrl_dev *pctldev,
246 unsigned pin, 264 unsigned pin,
247 unsigned long *configs) 265 unsigned long *configs)
248{ 266{
249 const struct pinctrl_pin_desc *pin_desc = &pctldev->desc->pins[pin]; 267 const struct pin_desc *desc = pin_desc_get(pctldev, pin);
250 enum pin_config_param param = pinconf_to_config_param(*configs); 268 enum pin_config_param param = pinconf_to_config_param(*configs);
251 bool has_arg = false; 269 bool has_arg = false;
252 u16 arg; 270 u16 arg;
@@ -256,14 +274,14 @@ static int uniphier_conf_pin_config_get(struct pinctrl_dev *pctldev,
256 case PIN_CONFIG_BIAS_DISABLE: 274 case PIN_CONFIG_BIAS_DISABLE:
257 case PIN_CONFIG_BIAS_PULL_UP: 275 case PIN_CONFIG_BIAS_PULL_UP:
258 case PIN_CONFIG_BIAS_PULL_DOWN: 276 case PIN_CONFIG_BIAS_PULL_DOWN:
259 ret = uniphier_conf_pin_bias_get(pctldev, pin_desc, param); 277 ret = uniphier_conf_pin_bias_get(pctldev, desc, param);
260 break; 278 break;
261 case PIN_CONFIG_DRIVE_STRENGTH: 279 case PIN_CONFIG_DRIVE_STRENGTH:
262 ret = uniphier_conf_pin_drive_get(pctldev, pin_desc, &arg); 280 ret = uniphier_conf_pin_drive_get(pctldev, desc, &arg);
263 has_arg = true; 281 has_arg = true;
264 break; 282 break;
265 case PIN_CONFIG_INPUT_ENABLE: 283 case PIN_CONFIG_INPUT_ENABLE:
266 ret = uniphier_conf_pin_input_enable_get(pctldev, pin_desc); 284 ret = uniphier_conf_pin_input_enable_get(pctldev, desc);
267 break; 285 break;
268 default: 286 default:
269 /* unsupported parameter */ 287 /* unsupported parameter */
@@ -278,13 +296,12 @@ static int uniphier_conf_pin_config_get(struct pinctrl_dev *pctldev,
278} 296}
279 297
280static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev, 298static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev,
281 const struct pinctrl_pin_desc *pin, 299 const struct pin_desc *desc,
282 enum pin_config_param param, 300 enum pin_config_param param, u16 arg)
283 u16 arg)
284{ 301{
285 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 302 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
286 enum uniphier_pin_pull_dir pull_dir = 303 enum uniphier_pin_pull_dir pull_dir =
287 uniphier_pin_get_pull_dir(pin->drv_data); 304 uniphier_pin_get_pull_dir(desc->drv_data);
288 unsigned int pupdctrl, reg, shift; 305 unsigned int pupdctrl, reg, shift;
289 unsigned int val = 1; 306 unsigned int val = 1;
290 307
@@ -295,8 +312,8 @@ static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev,
295 if (pull_dir == UNIPHIER_PIN_PULL_UP_FIXED || 312 if (pull_dir == UNIPHIER_PIN_PULL_UP_FIXED ||
296 pull_dir == UNIPHIER_PIN_PULL_DOWN_FIXED) { 313 pull_dir == UNIPHIER_PIN_PULL_DOWN_FIXED) {
297 dev_err(pctldev->dev, 314 dev_err(pctldev->dev,
298 "can not disable pull register for pin %u (%s)\n", 315 "can not disable pull register for pin %s\n",
299 pin->number, pin->name); 316 desc->name);
300 return -EINVAL; 317 return -EINVAL;
301 } 318 }
302 val = 0; 319 val = 0;
@@ -306,8 +323,8 @@ static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev,
306 return 0; 323 return 0;
307 if (pull_dir != UNIPHIER_PIN_PULL_UP) { 324 if (pull_dir != UNIPHIER_PIN_PULL_UP) {
308 dev_err(pctldev->dev, 325 dev_err(pctldev->dev,
309 "pull-up is unsupported for pin %u (%s)\n", 326 "pull-up is unsupported for pin %s\n",
310 pin->number, pin->name); 327 desc->name);
311 return -EINVAL; 328 return -EINVAL;
312 } 329 }
313 if (arg == 0) { 330 if (arg == 0) {
@@ -320,8 +337,8 @@ static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev,
320 return 0; 337 return 0;
321 if (pull_dir != UNIPHIER_PIN_PULL_DOWN) { 338 if (pull_dir != UNIPHIER_PIN_PULL_DOWN) {
322 dev_err(pctldev->dev, 339 dev_err(pctldev->dev,
323 "pull-down is unsupported for pin %u (%s)\n", 340 "pull-down is unsupported for pin %s\n",
324 pin->number, pin->name); 341 desc->name);
325 return -EINVAL; 342 return -EINVAL;
326 } 343 }
327 if (arg == 0) { 344 if (arg == 0) {
@@ -332,8 +349,8 @@ static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev,
332 case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT: 349 case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT:
333 if (pull_dir == UNIPHIER_PIN_PULL_NONE) { 350 if (pull_dir == UNIPHIER_PIN_PULL_NONE) {
334 dev_err(pctldev->dev, 351 dev_err(pctldev->dev,
335 "pull-up/down is unsupported for pin %u (%s)\n", 352 "pull-up/down is unsupported for pin %s\n",
336 pin->number, pin->name); 353 desc->name);
337 return -EINVAL; 354 return -EINVAL;
338 } 355 }
339 356
@@ -344,39 +361,48 @@ static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev,
344 BUG(); 361 BUG();
345 } 362 }
346 363
347 pupdctrl = uniphier_pin_get_pupdctrl(pin->drv_data); 364 pupdctrl = uniphier_pin_get_pupdctrl(desc->drv_data);
348 365
349 reg = UNIPHIER_PINCTRL_PUPDCTRL_BASE + pupdctrl / 32 * 4; 366 reg = UNIPHIER_PINCTRL_PUPDCTRL_BASE + pupdctrl / 32 * 4;
350 shift = pupdctrl % 32; 367 shift = pupdctrl % 32;
351 368
352 return regmap_update_bits(priv->regmap, reg, 1 << shift, val << shift); 369 return regmap_update_bits(priv->regmap, priv->regbase + reg,
370 1 << shift, val << shift);
353} 371}
354 372
355static int uniphier_conf_pin_drive_set(struct pinctrl_dev *pctldev, 373static int uniphier_conf_pin_drive_set(struct pinctrl_dev *pctldev,
356 const struct pinctrl_pin_desc *pin, 374 const struct pin_desc *desc,
357 u16 strength) 375 u16 strength)
358{ 376{
359 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 377 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
360 enum uniphier_pin_drv_str drv_str = 378 enum uniphier_pin_drv_type type =
361 uniphier_pin_get_drv_str(pin->drv_data); 379 uniphier_pin_get_drv_type(desc->drv_data);
362 const unsigned int strength_4_8[] = {4, 8, -1}; 380 const unsigned int strength_1bit[] = {4, 8, -1};
363 const unsigned int strength_8_12_16_20[] = {8, 12, 16, 20, -1}; 381 const unsigned int strength_2bit[] = {8, 12, 16, 20, -1};
382 const unsigned int strength_3bit[] = {4, 5, 7, 9, 11, 12, 14, 16, -1};
364 const unsigned int *supported_strength; 383 const unsigned int *supported_strength;
365 unsigned int drvctrl, reg, shift, mask, width, val; 384 unsigned int drvctrl, reg, shift, mask, width, val;
366 385
367 switch (drv_str) { 386 switch (type) {
368 case UNIPHIER_PIN_DRV_4_8: 387 case UNIPHIER_PIN_DRV_1BIT:
369 supported_strength = strength_4_8; 388 supported_strength = strength_1bit;
389 reg = UNIPHIER_PINCTRL_DRVCTRL_BASE;
370 width = 1; 390 width = 1;
371 break; 391 break;
372 case UNIPHIER_PIN_DRV_8_12_16_20: 392 case UNIPHIER_PIN_DRV_2BIT:
373 supported_strength = strength_8_12_16_20; 393 supported_strength = strength_2bit;
394 reg = UNIPHIER_PINCTRL_DRV2CTRL_BASE;
374 width = 2; 395 width = 2;
375 break; 396 break;
397 case UNIPHIER_PIN_DRV_3BIT:
398 supported_strength = strength_3bit;
399 reg = UNIPHIER_PINCTRL_DRV3CTRL_BASE;
400 width = 4;
401 break;
376 default: 402 default:
377 dev_err(pctldev->dev, 403 dev_err(pctldev->dev,
378 "cannot change drive strength for pin %u (%s)\n", 404 "cannot change drive strength for pin %s\n",
379 pin->number, pin->name); 405 desc->name);
380 return -EINVAL; 406 return -EINVAL;
381 } 407 }
382 408
@@ -387,49 +413,48 @@ static int uniphier_conf_pin_drive_set(struct pinctrl_dev *pctldev,
387 413
388 if (val == 0) { 414 if (val == 0) {
389 dev_err(pctldev->dev, 415 dev_err(pctldev->dev,
390 "unsupported drive strength %u mA for pin %u (%s)\n", 416 "unsupported drive strength %u mA for pin %s\n",
391 strength, pin->number, pin->name); 417 strength, desc->name);
392 return -EINVAL; 418 return -EINVAL;
393 } 419 }
394 420
395 val--; 421 val--;
396 422
397 drvctrl = uniphier_pin_get_drvctrl(pin->drv_data); 423 drvctrl = uniphier_pin_get_drvctrl(desc->drv_data);
398 drvctrl *= width; 424 drvctrl *= width;
399 425
400 reg = (width == 2) ? UNIPHIER_PINCTRL_DRV2CTRL_BASE :
401 UNIPHIER_PINCTRL_DRVCTRL_BASE;
402
403 reg += drvctrl / 32 * 4; 426 reg += drvctrl / 32 * 4;
404 shift = drvctrl % 32; 427 shift = drvctrl % 32;
405 mask = (1U << width) - 1; 428 mask = (1U << width) - 1;
406 429
407 return regmap_update_bits(priv->regmap, reg, 430 return regmap_update_bits(priv->regmap, priv->regbase + reg,
408 mask << shift, val << shift); 431 mask << shift, val << shift);
409} 432}
410 433
411static int uniphier_conf_pin_input_enable(struct pinctrl_dev *pctldev, 434static int uniphier_conf_pin_input_enable(struct pinctrl_dev *pctldev,
412 const struct pinctrl_pin_desc *pin, 435 const struct pin_desc *desc,
413 u16 enable) 436 u16 enable)
414{ 437{
415 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 438 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
416 unsigned int iectrl = uniphier_pin_get_iectrl(pin->drv_data); 439 unsigned int iectrl = uniphier_pin_get_iectrl(desc->drv_data);
440 unsigned int reg, mask;
417 441
418 if (enable == 0) { 442 /*
419 /* 443 * Multiple pins share one input enable, per-pin disabling is
420 * Multiple pins share one input enable, so per-pin disabling 444 * impossible.
421 * is impossible. 445 */
422 */ 446 if (!(priv->socdata->caps & UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL) &&
423 dev_err(pctldev->dev, "unable to disable input\n"); 447 !enable)
424 return -EINVAL; 448 return -EINVAL;
425 }
426 449
450 /* UNIPHIER_PIN_IECTRL_NONE means the pin is always input-enabled */
427 if (iectrl == UNIPHIER_PIN_IECTRL_NONE) 451 if (iectrl == UNIPHIER_PIN_IECTRL_NONE)
428 /* This pin is always input-enabled. nothing to do. */ 452 return enable ? 0 : -EINVAL;
429 return 0; 453
454 reg = priv->regbase + UNIPHIER_PINCTRL_IECTRL + iectrl / 32 * 4;
455 mask = BIT(iectrl % 32);
430 456
431 return regmap_update_bits(priv->regmap, UNIPHIER_PINCTRL_IECTRL, 457 return regmap_update_bits(priv->regmap, reg, mask, enable ? mask : 0);
432 BIT(iectrl), BIT(iectrl));
433} 458}
434 459
435static int uniphier_conf_pin_config_set(struct pinctrl_dev *pctldev, 460static int uniphier_conf_pin_config_set(struct pinctrl_dev *pctldev,
@@ -437,7 +462,7 @@ static int uniphier_conf_pin_config_set(struct pinctrl_dev *pctldev,
437 unsigned long *configs, 462 unsigned long *configs,
438 unsigned num_configs) 463 unsigned num_configs)
439{ 464{
440 const struct pinctrl_pin_desc *pin_desc = &pctldev->desc->pins[pin]; 465 const struct pin_desc *desc = pin_desc_get(pctldev, pin);
441 int i, ret; 466 int i, ret;
442 467
443 for (i = 0; i < num_configs; i++) { 468 for (i = 0; i < num_configs; i++) {
@@ -450,16 +475,15 @@ static int uniphier_conf_pin_config_set(struct pinctrl_dev *pctldev,
450 case PIN_CONFIG_BIAS_PULL_UP: 475 case PIN_CONFIG_BIAS_PULL_UP:
451 case PIN_CONFIG_BIAS_PULL_DOWN: 476 case PIN_CONFIG_BIAS_PULL_DOWN:
452 case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT: 477 case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT:
453 ret = uniphier_conf_pin_bias_set(pctldev, pin_desc, 478 ret = uniphier_conf_pin_bias_set(pctldev, desc,
454 param, arg); 479 param, arg);
455 break; 480 break;
456 case PIN_CONFIG_DRIVE_STRENGTH: 481 case PIN_CONFIG_DRIVE_STRENGTH:
457 ret = uniphier_conf_pin_drive_set(pctldev, pin_desc, 482 ret = uniphier_conf_pin_drive_set(pctldev, desc, arg);
458 arg);
459 break; 483 break;
460 case PIN_CONFIG_INPUT_ENABLE: 484 case PIN_CONFIG_INPUT_ENABLE:
461 ret = uniphier_conf_pin_input_enable(pctldev, 485 ret = uniphier_conf_pin_input_enable(pctldev, desc,
462 pin_desc, arg); 486 arg);
463 break; 487 break;
464 default: 488 default:
465 dev_err(pctldev->dev, 489 dev_err(pctldev->dev,
@@ -531,20 +555,42 @@ static int uniphier_pmx_get_function_groups(struct pinctrl_dev *pctldev,
531} 555}
532 556
533static int uniphier_pmx_set_one_mux(struct pinctrl_dev *pctldev, unsigned pin, 557static int uniphier_pmx_set_one_mux(struct pinctrl_dev *pctldev, unsigned pin,
534 unsigned muxval) 558 int muxval)
535{ 559{
536 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 560 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev);
537 unsigned mux_bits = priv->socdata->mux_bits; 561 unsigned int mux_bits, reg_stride, reg, reg_end, shift, mask;
538 unsigned reg_stride = priv->socdata->reg_stride; 562 bool load_pinctrl;
539 unsigned reg, reg_end, shift, mask;
540 int ret; 563 int ret;
541 564
542 /* some pins need input-enabling */ 565 /* some pins need input-enabling */
543 ret = uniphier_conf_pin_input_enable(pctldev, 566 ret = uniphier_conf_pin_input_enable(pctldev,
544 &pctldev->desc->pins[pin], 1); 567 pin_desc_get(pctldev, pin), 1);
545 if (ret) 568 if (ret)
546 return ret; 569 return ret;
547 570
571 if (muxval < 0)
572 return 0; /* dedicated pin; nothing to do for pin-mux */
573
574 if (priv->socdata->caps & UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE) {
575 /*
576 * Mode reg_offset bit_position
577 * Normal 4 * n shift+3:shift
578 * Debug 4 * n shift+7:shift+4
579 */
580 mux_bits = 4;
581 reg_stride = 8;
582 load_pinctrl = true;
583 } else {
584 /*
585 * Mode reg_offset bit_position
586 * Normal 8 * n shift+3:shift
587 * Debug 8 * n + 4 shift+3:shift
588 */
589 mux_bits = 8;
590 reg_stride = 4;
591 load_pinctrl = false;
592 }
593
548 reg = UNIPHIER_PINCTRL_PINMUX_BASE + pin * mux_bits / 32 * reg_stride; 594 reg = UNIPHIER_PINCTRL_PINMUX_BASE + pin * mux_bits / 32 * reg_stride;
549 reg_end = reg + reg_stride; 595 reg_end = reg + reg_stride;
550 shift = pin * mux_bits % 32; 596 shift = pin * mux_bits % 32;
@@ -555,16 +601,17 @@ static int uniphier_pmx_set_one_mux(struct pinctrl_dev *pctldev, unsigned pin,
555 * stored in the offset+4. 601 * stored in the offset+4.
556 */ 602 */
557 for (; reg < reg_end; reg += 4) { 603 for (; reg < reg_end; reg += 4) {
558 ret = regmap_update_bits(priv->regmap, reg, 604 ret = regmap_update_bits(priv->regmap, priv->regbase + reg,
559 mask << shift, muxval << shift); 605 mask << shift, muxval << shift);
560 if (ret) 606 if (ret)
561 return ret; 607 return ret;
562 muxval >>= mux_bits; 608 muxval >>= mux_bits;
563 } 609 }
564 610
565 if (priv->socdata->load_pinctrl) { 611 if (load_pinctrl) {
566 ret = regmap_write(priv->regmap, 612 ret = regmap_write(priv->regmap,
567 UNIPHIER_PINCTRL_LOAD_PINMUX, 1); 613 priv->regbase + UNIPHIER_PINCTRL_LOAD_PINMUX,
614 1);
568 if (ret) 615 if (ret)
569 return ret; 616 return ret;
570 } 617 }
@@ -633,19 +680,16 @@ static const struct pinmux_ops uniphier_pmxops = {
633}; 680};
634 681
635int uniphier_pinctrl_probe(struct platform_device *pdev, 682int uniphier_pinctrl_probe(struct platform_device *pdev,
636 struct pinctrl_desc *desc,
637 struct uniphier_pinctrl_socdata *socdata) 683 struct uniphier_pinctrl_socdata *socdata)
638{ 684{
639 struct device *dev = &pdev->dev; 685 struct device *dev = &pdev->dev;
640 struct uniphier_pinctrl_priv *priv; 686 struct uniphier_pinctrl_priv *priv;
687 struct device_node *parent;
641 688
642 if (!socdata || 689 if (!socdata ||
643 !socdata->groups || 690 !socdata->pins || !socdata->npins ||
644 !socdata->groups_count || 691 !socdata->groups || !socdata->groups_count ||
645 !socdata->functions || 692 !socdata->functions || !socdata->functions_count) {
646 !socdata->functions_count ||
647 !socdata->mux_bits ||
648 !socdata->reg_stride) {
649 dev_err(dev, "pinctrl socdata lacks necessary members\n"); 693 dev_err(dev, "pinctrl socdata lacks necessary members\n");
650 return -EINVAL; 694 return -EINVAL;
651 } 695 }
@@ -654,18 +698,36 @@ int uniphier_pinctrl_probe(struct platform_device *pdev,
654 if (!priv) 698 if (!priv)
655 return -ENOMEM; 699 return -ENOMEM;
656 700
657 priv->regmap = syscon_node_to_regmap(dev->of_node); 701 if (of_device_is_compatible(dev->of_node, "socionext,ph1-ld4-pinctrl") ||
702 of_device_is_compatible(dev->of_node, "socionext,ph1-pro4-pinctrl") ||
703 of_device_is_compatible(dev->of_node, "socionext,ph1-sld8-pinctrl") ||
704 of_device_is_compatible(dev->of_node, "socionext,ph1-pro5-pinctrl") ||
705 of_device_is_compatible(dev->of_node, "socionext,proxstream2-pinctrl") ||
706 of_device_is_compatible(dev->of_node, "socionext,ph1-ld6b-pinctrl")) {
707 /* old binding */
708 priv->regmap = syscon_node_to_regmap(dev->of_node);
709 } else {
710 priv->regbase = 0x1000;
711 parent = of_get_parent(dev->of_node);
712 priv->regmap = syscon_node_to_regmap(parent);
713 of_node_put(parent);
714 }
715
658 if (IS_ERR(priv->regmap)) { 716 if (IS_ERR(priv->regmap)) {
659 dev_err(dev, "failed to get regmap\n"); 717 dev_err(dev, "failed to get regmap\n");
660 return PTR_ERR(priv->regmap); 718 return PTR_ERR(priv->regmap);
661 } 719 }
662 720
663 priv->socdata = socdata; 721 priv->socdata = socdata;
664 desc->pctlops = &uniphier_pctlops; 722 priv->pctldesc.name = dev->driver->name;
665 desc->pmxops = &uniphier_pmxops; 723 priv->pctldesc.pins = socdata->pins;
666 desc->confops = &uniphier_confops; 724 priv->pctldesc.npins = socdata->npins;
667 725 priv->pctldesc.pctlops = &uniphier_pctlops;
668 priv->pctldev = devm_pinctrl_register(dev, desc, priv); 726 priv->pctldesc.pmxops = &uniphier_pmxops;
727 priv->pctldesc.confops = &uniphier_confops;
728 priv->pctldesc.owner = dev->driver->owner;
729
730 priv->pctldev = devm_pinctrl_register(dev, &priv->pctldesc, priv);
669 if (IS_ERR(priv->pctldev)) { 731 if (IS_ERR(priv->pctldev)) {
670 dev_err(dev, "failed to register UniPhier pinctrl driver\n"); 732 dev_err(dev, "failed to register UniPhier pinctrl driver\n");
671 return PTR_ERR(priv->pctldev); 733 return PTR_ERR(priv->pctldev);
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
new file mode 100644
index 000000000000..77a0236ee781
--- /dev/null
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
@@ -0,0 +1,952 @@
1/*
2 * Copyright (C) 2016 Socionext Inc.
3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#include <linux/kernel.h>
17#include <linux/module.h>
18#include <linux/pinctrl/pinctrl.h>
19#include <linux/platform_device.h>
20
21#include "pinctrl-uniphier.h"
22
23static const struct pinctrl_pin_desc uniphier_ld11_pins[] = {
24 UNIPHIER_PINCTRL_PIN(0, "XECS1", 0,
25 0, UNIPHIER_PIN_DRV_1BIT,
26 0, UNIPHIER_PIN_PULL_UP),
27 UNIPHIER_PINCTRL_PIN(1, "ERXW", UNIPHIER_PIN_IECTRL_NONE,
28 1, UNIPHIER_PIN_DRV_1BIT,
29 1, UNIPHIER_PIN_PULL_UP),
30 UNIPHIER_PINCTRL_PIN(2, "XERWE1", UNIPHIER_PIN_IECTRL_NONE,
31 2, UNIPHIER_PIN_DRV_1BIT,
32 2, UNIPHIER_PIN_PULL_UP),
33 UNIPHIER_PINCTRL_PIN(3, "XNFWP", 3,
34 3, UNIPHIER_PIN_DRV_1BIT,
35 3, UNIPHIER_PIN_PULL_DOWN),
36 UNIPHIER_PINCTRL_PIN(4, "XNFCE0", 4,
37 4, UNIPHIER_PIN_DRV_1BIT,
38 4, UNIPHIER_PIN_PULL_UP),
39 UNIPHIER_PINCTRL_PIN(5, "NFRYBY0", 5,
40 5, UNIPHIER_PIN_DRV_1BIT,
41 5, UNIPHIER_PIN_PULL_UP),
42 UNIPHIER_PINCTRL_PIN(6, "XNFRE", UNIPHIER_PIN_IECTRL_NONE,
43 6, UNIPHIER_PIN_DRV_1BIT,
44 6, UNIPHIER_PIN_PULL_UP),
45 UNIPHIER_PINCTRL_PIN(7, "XNFWE", UNIPHIER_PIN_IECTRL_NONE,
46 7, UNIPHIER_PIN_DRV_1BIT,
47 7, UNIPHIER_PIN_PULL_UP),
48 UNIPHIER_PINCTRL_PIN(8, "NFALE", UNIPHIER_PIN_IECTRL_NONE,
49 8, UNIPHIER_PIN_DRV_1BIT,
50 8, UNIPHIER_PIN_PULL_UP),
51 UNIPHIER_PINCTRL_PIN(9, "NFCLE", UNIPHIER_PIN_IECTRL_NONE,
52 9, UNIPHIER_PIN_DRV_1BIT,
53 9, UNIPHIER_PIN_PULL_UP),
54 UNIPHIER_PINCTRL_PIN(10, "NFD0", 10,
55 10, UNIPHIER_PIN_DRV_1BIT,
56 10, UNIPHIER_PIN_PULL_UP),
57 UNIPHIER_PINCTRL_PIN(11, "NFD1", 11,
58 11, UNIPHIER_PIN_DRV_1BIT,
59 11, UNIPHIER_PIN_PULL_UP),
60 UNIPHIER_PINCTRL_PIN(12, "NFD2", 12,
61 12, UNIPHIER_PIN_DRV_1BIT,
62 12, UNIPHIER_PIN_PULL_UP),
63 UNIPHIER_PINCTRL_PIN(13, "NFD3", 13,
64 13, UNIPHIER_PIN_DRV_1BIT,
65 13, UNIPHIER_PIN_PULL_UP),
66 UNIPHIER_PINCTRL_PIN(14, "NFD4", 14,
67 14, UNIPHIER_PIN_DRV_1BIT,
68 14, UNIPHIER_PIN_PULL_UP),
69 UNIPHIER_PINCTRL_PIN(15, "NFD5", 15,
70 15, UNIPHIER_PIN_DRV_1BIT,
71 15, UNIPHIER_PIN_PULL_UP),
72 UNIPHIER_PINCTRL_PIN(16, "NFD6", 16,
73 16, UNIPHIER_PIN_DRV_1BIT,
74 16, UNIPHIER_PIN_PULL_UP),
75 UNIPHIER_PINCTRL_PIN(17, "NFD7", 17,
76 17, UNIPHIER_PIN_DRV_1BIT,
77 17, UNIPHIER_PIN_PULL_UP),
78 UNIPHIER_PINCTRL_PIN(18, "XERST", 18,
79 0, UNIPHIER_PIN_DRV_2BIT,
80 18, UNIPHIER_PIN_PULL_UP),
81 UNIPHIER_PINCTRL_PIN(19, "MMCCLK", 19,
82 1, UNIPHIER_PIN_DRV_2BIT,
83 19, UNIPHIER_PIN_PULL_UP),
84 UNIPHIER_PINCTRL_PIN(20, "MMCCMD", 20,
85 2, UNIPHIER_PIN_DRV_2BIT,
86 20, UNIPHIER_PIN_PULL_UP),
87 UNIPHIER_PINCTRL_PIN(21, "MMCDS", 21,
88 3, UNIPHIER_PIN_DRV_2BIT,
89 21, UNIPHIER_PIN_PULL_UP),
90 UNIPHIER_PINCTRL_PIN(22, "MMCDAT0", 22,
91 4, UNIPHIER_PIN_DRV_2BIT,
92 22, UNIPHIER_PIN_PULL_UP),
93 UNIPHIER_PINCTRL_PIN(23, "MMCDAT1", 23,
94 5, UNIPHIER_PIN_DRV_2BIT,
95 23, UNIPHIER_PIN_PULL_UP),
96 UNIPHIER_PINCTRL_PIN(24, "MMCDAT2", 24,
97 6, UNIPHIER_PIN_DRV_2BIT,
98 24, UNIPHIER_PIN_PULL_UP),
99 UNIPHIER_PINCTRL_PIN(25, "MMCDAT3", 25,
100 7, UNIPHIER_PIN_DRV_2BIT,
101 25, UNIPHIER_PIN_PULL_UP),
102 UNIPHIER_PINCTRL_PIN(26, "MMCDAT4", 26,
103 8, UNIPHIER_PIN_DRV_2BIT,
104 26, UNIPHIER_PIN_PULL_UP),
105 UNIPHIER_PINCTRL_PIN(27, "MMCDAT5", 27,
106 9, UNIPHIER_PIN_DRV_2BIT,
107 27, UNIPHIER_PIN_PULL_UP),
108 UNIPHIER_PINCTRL_PIN(28, "MMCDAT6", 28,
109 10, UNIPHIER_PIN_DRV_2BIT,
110 28, UNIPHIER_PIN_PULL_UP),
111 UNIPHIER_PINCTRL_PIN(29, "MMCDAT7", 29,
112 11, UNIPHIER_PIN_DRV_2BIT,
113 29, UNIPHIER_PIN_PULL_UP),
114 UNIPHIER_PINCTRL_PIN(46, "USB0VBUS", 46,
115 46, UNIPHIER_PIN_DRV_1BIT,
116 46, UNIPHIER_PIN_PULL_DOWN),
117 UNIPHIER_PINCTRL_PIN(47, "USB0OD", UNIPHIER_PIN_IECTRL_NONE,
118 47, UNIPHIER_PIN_DRV_1BIT,
119 47, UNIPHIER_PIN_PULL_UP),
120 UNIPHIER_PINCTRL_PIN(48, "USB1VBUS", 48,
121 48, UNIPHIER_PIN_DRV_1BIT,
122 48, UNIPHIER_PIN_PULL_DOWN),
123 UNIPHIER_PINCTRL_PIN(49, "USB1OD", 49,
124 49, UNIPHIER_PIN_DRV_1BIT,
125 49, UNIPHIER_PIN_PULL_UP),
126 UNIPHIER_PINCTRL_PIN(50, "USB2VBUS", 50,
127 50, UNIPHIER_PIN_DRV_1BIT,
128 50, UNIPHIER_PIN_PULL_DOWN),
129 UNIPHIER_PINCTRL_PIN(51, "USB2OD", 51,
130 51, UNIPHIER_PIN_DRV_1BIT,
131 51, UNIPHIER_PIN_PULL_UP),
132 UNIPHIER_PINCTRL_PIN(54, "TXD0", 54,
133 54, UNIPHIER_PIN_DRV_1BIT,
134 54, UNIPHIER_PIN_PULL_UP),
135 UNIPHIER_PINCTRL_PIN(55, "RXD0", 55,
136 55, UNIPHIER_PIN_DRV_1BIT,
137 55, UNIPHIER_PIN_PULL_UP),
138 UNIPHIER_PINCTRL_PIN(56, "SPISYNC0", 56,
139 56, UNIPHIER_PIN_DRV_1BIT,
140 56, UNIPHIER_PIN_PULL_DOWN),
141 UNIPHIER_PINCTRL_PIN(57, "SPISCLK0", 57,
142 57, UNIPHIER_PIN_DRV_1BIT,
143 57, UNIPHIER_PIN_PULL_DOWN),
144 UNIPHIER_PINCTRL_PIN(58, "SPITXD0", 58,
145 58, UNIPHIER_PIN_DRV_1BIT,
146 58, UNIPHIER_PIN_PULL_DOWN),
147 UNIPHIER_PINCTRL_PIN(59, "SPIRXD0", 59,
148 59, UNIPHIER_PIN_DRV_1BIT,
149 59, UNIPHIER_PIN_PULL_DOWN),
150 UNIPHIER_PINCTRL_PIN(60, "AGCI", 60,
151 60, UNIPHIER_PIN_DRV_1BIT,
152 60, UNIPHIER_PIN_PULL_DOWN),
153 UNIPHIER_PINCTRL_PIN(61, "DMDSDA0", 61,
154 -1, UNIPHIER_PIN_DRV_FIXED4,
155 -1, UNIPHIER_PIN_PULL_NONE),
156 UNIPHIER_PINCTRL_PIN(62, "DMDSCL0", 62,
157 -1, UNIPHIER_PIN_DRV_FIXED4,
158 -1, UNIPHIER_PIN_PULL_NONE),
159 UNIPHIER_PINCTRL_PIN(63, "SDA0", 63,
160 -1, UNIPHIER_PIN_DRV_FIXED4,
161 -1, UNIPHIER_PIN_PULL_NONE),
162 UNIPHIER_PINCTRL_PIN(64, "SCL0", 64,
163 -1, UNIPHIER_PIN_DRV_FIXED4,
164 -1, UNIPHIER_PIN_PULL_NONE),
165 UNIPHIER_PINCTRL_PIN(65, "SDA1", 65,
166 -1, UNIPHIER_PIN_DRV_FIXED4,
167 -1, UNIPHIER_PIN_PULL_NONE),
168 UNIPHIER_PINCTRL_PIN(66, "SCL1", 66,
169 -1, UNIPHIER_PIN_DRV_FIXED4,
170 -1, UNIPHIER_PIN_PULL_NONE),
171 UNIPHIER_PINCTRL_PIN(67, "HIN", 67,
172 -1, UNIPHIER_PIN_DRV_FIXED5,
173 -1, UNIPHIER_PIN_PULL_NONE),
174 UNIPHIER_PINCTRL_PIN(68, "VIN", 68,
175 -1, UNIPHIER_PIN_DRV_FIXED5,
176 -1, UNIPHIER_PIN_PULL_NONE),
177 UNIPHIER_PINCTRL_PIN(69, "PCA00", 69,
178 69, UNIPHIER_PIN_DRV_1BIT,
179 69, UNIPHIER_PIN_PULL_DOWN),
180 UNIPHIER_PINCTRL_PIN(70, "PCA01", 70,
181 70, UNIPHIER_PIN_DRV_1BIT,
182 70, UNIPHIER_PIN_PULL_DOWN),
183 UNIPHIER_PINCTRL_PIN(71, "PCA02", 71,
184 71, UNIPHIER_PIN_DRV_1BIT,
185 71, UNIPHIER_PIN_PULL_DOWN),
186 UNIPHIER_PINCTRL_PIN(72, "PCA03", 72,
187 72, UNIPHIER_PIN_DRV_1BIT,
188 72, UNIPHIER_PIN_PULL_DOWN),
189 UNIPHIER_PINCTRL_PIN(73, "PCA04", 73,
190 73, UNIPHIER_PIN_DRV_1BIT,
191 73, UNIPHIER_PIN_PULL_DOWN),
192 UNIPHIER_PINCTRL_PIN(74, "PCA05", 74,
193 74, UNIPHIER_PIN_DRV_1BIT,
194 74, UNIPHIER_PIN_PULL_DOWN),
195 UNIPHIER_PINCTRL_PIN(75, "PCA06", 75,
196 75, UNIPHIER_PIN_DRV_1BIT,
197 75, UNIPHIER_PIN_PULL_DOWN),
198 UNIPHIER_PINCTRL_PIN(76, "PCA07", 76,
199 76, UNIPHIER_PIN_DRV_1BIT,
200 76, UNIPHIER_PIN_PULL_DOWN),
201 UNIPHIER_PINCTRL_PIN(77, "PCA08", 77,
202 77, UNIPHIER_PIN_DRV_1BIT,
203 77, UNIPHIER_PIN_PULL_DOWN),
204 UNIPHIER_PINCTRL_PIN(78, "PCA09", 78,
205 78, UNIPHIER_PIN_DRV_1BIT,
206 78, UNIPHIER_PIN_PULL_DOWN),
207 UNIPHIER_PINCTRL_PIN(79, "PCA10", 79,
208 79, UNIPHIER_PIN_DRV_1BIT,
209 79, UNIPHIER_PIN_PULL_DOWN),
210 UNIPHIER_PINCTRL_PIN(80, "PCA11", 80,
211 80, UNIPHIER_PIN_DRV_1BIT,
212 80, UNIPHIER_PIN_PULL_DOWN),
213 UNIPHIER_PINCTRL_PIN(81, "PCA12", 81,
214 81, UNIPHIER_PIN_DRV_1BIT,
215 81, UNIPHIER_PIN_PULL_DOWN),
216 UNIPHIER_PINCTRL_PIN(82, "PCA13", 82,
217 82, UNIPHIER_PIN_DRV_1BIT,
218 82, UNIPHIER_PIN_PULL_DOWN),
219 UNIPHIER_PINCTRL_PIN(83, "PCA14", 83,
220 83, UNIPHIER_PIN_DRV_1BIT,
221 83, UNIPHIER_PIN_PULL_DOWN),
222 UNIPHIER_PINCTRL_PIN(84, "PC0READY", 84,
223 84, UNIPHIER_PIN_DRV_1BIT,
224 84, UNIPHIER_PIN_PULL_DOWN),
225 UNIPHIER_PINCTRL_PIN(85, "PC0CD1", 85,
226 85, UNIPHIER_PIN_DRV_1BIT,
227 85, UNIPHIER_PIN_PULL_DOWN),
228 UNIPHIER_PINCTRL_PIN(86, "PC0CD2", 86,
229 86, UNIPHIER_PIN_DRV_1BIT,
230 86, UNIPHIER_PIN_PULL_DOWN),
231 UNIPHIER_PINCTRL_PIN(87, "PC0WAIT", 87,
232 87, UNIPHIER_PIN_DRV_1BIT,
233 87, UNIPHIER_PIN_PULL_DOWN),
234 UNIPHIER_PINCTRL_PIN(88, "PC0RESET", 88,
235 88, UNIPHIER_PIN_DRV_1BIT,
236 88, UNIPHIER_PIN_PULL_DOWN),
237 UNIPHIER_PINCTRL_PIN(89, "PC0CE1", 89,
238 89, UNIPHIER_PIN_DRV_1BIT,
239 89, UNIPHIER_PIN_PULL_DOWN),
240 UNIPHIER_PINCTRL_PIN(90, "PC0WE", 90,
241 90, UNIPHIER_PIN_DRV_1BIT,
242 90, UNIPHIER_PIN_PULL_DOWN),
243 UNIPHIER_PINCTRL_PIN(91, "PC0OE", 91,
244 91, UNIPHIER_PIN_DRV_1BIT,
245 91, UNIPHIER_PIN_PULL_DOWN),
246 UNIPHIER_PINCTRL_PIN(92, "PC0IOWR", 92,
247 92, UNIPHIER_PIN_DRV_1BIT,
248 92, UNIPHIER_PIN_PULL_DOWN),
249 UNIPHIER_PINCTRL_PIN(93, "PC0IORD", 93,
250 93, UNIPHIER_PIN_DRV_1BIT,
251 93, UNIPHIER_PIN_PULL_DOWN),
252 UNIPHIER_PINCTRL_PIN(94, "PCD00", 94,
253 94, UNIPHIER_PIN_DRV_1BIT,
254 94, UNIPHIER_PIN_PULL_DOWN),
255 UNIPHIER_PINCTRL_PIN(95, "PCD01", 95,
256 95, UNIPHIER_PIN_DRV_1BIT,
257 95, UNIPHIER_PIN_PULL_DOWN),
258 UNIPHIER_PINCTRL_PIN(96, "PCD02", 96,
259 96, UNIPHIER_PIN_DRV_1BIT,
260 96, UNIPHIER_PIN_PULL_DOWN),
261 UNIPHIER_PINCTRL_PIN(97, "PCD03", 97,
262 97, UNIPHIER_PIN_DRV_1BIT,
263 97, UNIPHIER_PIN_PULL_DOWN),
264 UNIPHIER_PINCTRL_PIN(98, "PCD04", 98,
265 98, UNIPHIER_PIN_DRV_1BIT,
266 98, UNIPHIER_PIN_PULL_DOWN),
267 UNIPHIER_PINCTRL_PIN(99, "PCD05", 99,
268 99, UNIPHIER_PIN_DRV_1BIT,
269 99, UNIPHIER_PIN_PULL_DOWN),
270 UNIPHIER_PINCTRL_PIN(100, "PCD06", 100,
271 100, UNIPHIER_PIN_DRV_1BIT,
272 100, UNIPHIER_PIN_PULL_DOWN),
273 UNIPHIER_PINCTRL_PIN(101, "PCD07", 101,
274 101, UNIPHIER_PIN_DRV_1BIT,
275 101, UNIPHIER_PIN_PULL_DOWN),
276 UNIPHIER_PINCTRL_PIN(102, "HS0BCLKIN", 102,
277 102, UNIPHIER_PIN_DRV_1BIT,
278 102, UNIPHIER_PIN_PULL_DOWN),
279 UNIPHIER_PINCTRL_PIN(103, "HS0SYNCIN", 103,
280 103, UNIPHIER_PIN_DRV_1BIT,
281 103, UNIPHIER_PIN_PULL_DOWN),
282 UNIPHIER_PINCTRL_PIN(104, "HS0VALIN", 104,
283 104, UNIPHIER_PIN_DRV_1BIT,
284 104, UNIPHIER_PIN_PULL_DOWN),
285 UNIPHIER_PINCTRL_PIN(105, "HS0DIN0", 105,
286 105, UNIPHIER_PIN_DRV_1BIT,
287 105, UNIPHIER_PIN_PULL_DOWN),
288 UNIPHIER_PINCTRL_PIN(106, "HS0DIN1", 106,
289 106, UNIPHIER_PIN_DRV_1BIT,
290 106, UNIPHIER_PIN_PULL_DOWN),
291 UNIPHIER_PINCTRL_PIN(107, "HS0DIN2", 107,
292 107, UNIPHIER_PIN_DRV_1BIT,
293 107, UNIPHIER_PIN_PULL_DOWN),
294 UNIPHIER_PINCTRL_PIN(108, "HS0DIN3", 108,
295 108, UNIPHIER_PIN_DRV_1BIT,
296 108, UNIPHIER_PIN_PULL_DOWN),
297 UNIPHIER_PINCTRL_PIN(109, "HS0DIN4", 109,
298 109, UNIPHIER_PIN_DRV_1BIT,
299 109, UNIPHIER_PIN_PULL_DOWN),
300 UNIPHIER_PINCTRL_PIN(110, "HS0DIN5", 110,
301 110, UNIPHIER_PIN_DRV_1BIT,
302 110, UNIPHIER_PIN_PULL_DOWN),
303 UNIPHIER_PINCTRL_PIN(111, "HS0DIN6", 111,
304 111, UNIPHIER_PIN_DRV_1BIT,
305 111, UNIPHIER_PIN_PULL_DOWN),
306 UNIPHIER_PINCTRL_PIN(112, "HS0DIN7", 112,
307 112, UNIPHIER_PIN_DRV_1BIT,
308 112, UNIPHIER_PIN_PULL_DOWN),
309 UNIPHIER_PINCTRL_PIN(113, "HS0BCLKOUT", 113,
310 113, UNIPHIER_PIN_DRV_1BIT,
311 113, UNIPHIER_PIN_PULL_DOWN),
312 UNIPHIER_PINCTRL_PIN(114, "HS0SYNCOUT", 114,
313 114, UNIPHIER_PIN_DRV_1BIT,
314 114, UNIPHIER_PIN_PULL_DOWN),
315 UNIPHIER_PINCTRL_PIN(115, "HS0VALOUT", 115,
316 115, UNIPHIER_PIN_DRV_1BIT,
317 115, UNIPHIER_PIN_PULL_DOWN),
318 UNIPHIER_PINCTRL_PIN(116, "HS0DOUT0", 116,
319 116, UNIPHIER_PIN_DRV_1BIT,
320 116, UNIPHIER_PIN_PULL_DOWN),
321 UNIPHIER_PINCTRL_PIN(117, "HS0DOUT1", 117,
322 117, UNIPHIER_PIN_DRV_1BIT,
323 117, UNIPHIER_PIN_PULL_DOWN),
324 UNIPHIER_PINCTRL_PIN(118, "HS0DOUT2", 118,
325 118, UNIPHIER_PIN_DRV_1BIT,
326 118, UNIPHIER_PIN_PULL_DOWN),
327 UNIPHIER_PINCTRL_PIN(119, "HS0DOUT3", 119,
328 119, UNIPHIER_PIN_DRV_1BIT,
329 119, UNIPHIER_PIN_PULL_DOWN),
330 UNIPHIER_PINCTRL_PIN(120, "HS0DOUT4", 120,
331 120, UNIPHIER_PIN_DRV_1BIT,
332 120, UNIPHIER_PIN_PULL_DOWN),
333 UNIPHIER_PINCTRL_PIN(121, "HS0DOUT5", 121,
334 121, UNIPHIER_PIN_DRV_1BIT,
335 121, UNIPHIER_PIN_PULL_DOWN),
336 UNIPHIER_PINCTRL_PIN(122, "HS0DOUT6", 122,
337 122, UNIPHIER_PIN_DRV_1BIT,
338 122, UNIPHIER_PIN_PULL_DOWN),
339 UNIPHIER_PINCTRL_PIN(123, "HS0DOUT7", 123,
340 123, UNIPHIER_PIN_DRV_1BIT,
341 123, UNIPHIER_PIN_PULL_DOWN),
342 UNIPHIER_PINCTRL_PIN(124, "HS1BCLKIN", 124,
343 124, UNIPHIER_PIN_DRV_1BIT,
344 124, UNIPHIER_PIN_PULL_DOWN),
345 UNIPHIER_PINCTRL_PIN(125, "HS1SYNCIN", 125,
346 125, UNIPHIER_PIN_DRV_1BIT,
347 125, UNIPHIER_PIN_PULL_DOWN),
348 UNIPHIER_PINCTRL_PIN(126, "HS1VALIN", 126,
349 126, UNIPHIER_PIN_DRV_1BIT,
350 126, UNIPHIER_PIN_PULL_DOWN),
351 UNIPHIER_PINCTRL_PIN(127, "HS1DIN0", 127,
352 127, UNIPHIER_PIN_DRV_1BIT,
353 127, UNIPHIER_PIN_PULL_DOWN),
354 UNIPHIER_PINCTRL_PIN(128, "HS1DIN1", 128,
355 128, UNIPHIER_PIN_DRV_1BIT,
356 128, UNIPHIER_PIN_PULL_DOWN),
357 UNIPHIER_PINCTRL_PIN(129, "HS1DIN2", 129,
358 129, UNIPHIER_PIN_DRV_1BIT,
359 129, UNIPHIER_PIN_PULL_DOWN),
360 UNIPHIER_PINCTRL_PIN(130, "HS1DIN3", 130,
361 130, UNIPHIER_PIN_DRV_1BIT,
362 130, UNIPHIER_PIN_PULL_DOWN),
363 UNIPHIER_PINCTRL_PIN(131, "HS1DIN4", 131,
364 131, UNIPHIER_PIN_DRV_1BIT,
365 131, UNIPHIER_PIN_PULL_DOWN),
366 UNIPHIER_PINCTRL_PIN(132, "HS1DIN5", 132,
367 132, UNIPHIER_PIN_DRV_1BIT,
368 132, UNIPHIER_PIN_PULL_DOWN),
369 UNIPHIER_PINCTRL_PIN(133, "HS1DIN6", 133,
370 133, UNIPHIER_PIN_DRV_1BIT,
371 133, UNIPHIER_PIN_PULL_DOWN),
372 UNIPHIER_PINCTRL_PIN(134, "HS1DIN7", 134,
373 134, UNIPHIER_PIN_DRV_1BIT,
374 134, UNIPHIER_PIN_PULL_DOWN),
375 UNIPHIER_PINCTRL_PIN(135, "AO1IEC", 135,
376 135, UNIPHIER_PIN_DRV_1BIT,
377 135, UNIPHIER_PIN_PULL_DOWN),
378 UNIPHIER_PINCTRL_PIN(136, "AO1ARC", 136,
379 136, UNIPHIER_PIN_DRV_1BIT,
380 136, UNIPHIER_PIN_PULL_DOWN),
381 UNIPHIER_PINCTRL_PIN(137, "AO1DACCK", 137,
382 137, UNIPHIER_PIN_DRV_1BIT,
383 137, UNIPHIER_PIN_PULL_DOWN),
384 UNIPHIER_PINCTRL_PIN(138, "AO1BCK", 138,
385 138, UNIPHIER_PIN_DRV_1BIT,
386 138, UNIPHIER_PIN_PULL_DOWN),
387 UNIPHIER_PINCTRL_PIN(139, "AO1LRCK", 139,
388 139, UNIPHIER_PIN_DRV_1BIT,
389 139, UNIPHIER_PIN_PULL_DOWN),
390 UNIPHIER_PINCTRL_PIN(140, "AO1D0", 140,
391 140, UNIPHIER_PIN_DRV_1BIT,
392 140, UNIPHIER_PIN_PULL_DOWN),
393 UNIPHIER_PINCTRL_PIN(141, "TCON0", 141,
394 141, UNIPHIER_PIN_DRV_1BIT,
395 141, UNIPHIER_PIN_PULL_DOWN),
396 UNIPHIER_PINCTRL_PIN(142, "TCON1", 142,
397 142, UNIPHIER_PIN_DRV_1BIT,
398 142, UNIPHIER_PIN_PULL_DOWN),
399 UNIPHIER_PINCTRL_PIN(143, "TCON2", 143,
400 143, UNIPHIER_PIN_DRV_1BIT,
401 143, UNIPHIER_PIN_PULL_DOWN),
402 UNIPHIER_PINCTRL_PIN(144, "TCON3", 144,
403 144, UNIPHIER_PIN_DRV_1BIT,
404 144, UNIPHIER_PIN_PULL_DOWN),
405 UNIPHIER_PINCTRL_PIN(145, "TCON4", 145,
406 145, UNIPHIER_PIN_DRV_1BIT,
407 145, UNIPHIER_PIN_PULL_DOWN),
408 UNIPHIER_PINCTRL_PIN(146, "TCON5", 146,
409 146, UNIPHIER_PIN_DRV_1BIT,
410 146, UNIPHIER_PIN_PULL_DOWN),
411 UNIPHIER_PINCTRL_PIN(147, "PWMA", 147,
412 147, UNIPHIER_PIN_DRV_1BIT,
413 147, UNIPHIER_PIN_PULL_DOWN),
414 UNIPHIER_PINCTRL_PIN(148, "LR_GOUT", 148,
415 148, UNIPHIER_PIN_DRV_1BIT,
416 148, UNIPHIER_PIN_PULL_DOWN),
417 UNIPHIER_PINCTRL_PIN(149, "XIRQ0", 149,
418 149, UNIPHIER_PIN_DRV_1BIT,
419 149, UNIPHIER_PIN_PULL_DOWN),
420 UNIPHIER_PINCTRL_PIN(150, "XIRQ1", 150,
421 150, UNIPHIER_PIN_DRV_1BIT,
422 150, UNIPHIER_PIN_PULL_DOWN),
423 UNIPHIER_PINCTRL_PIN(151, "XIRQ2", 151,
424 151, UNIPHIER_PIN_DRV_1BIT,
425 151, UNIPHIER_PIN_PULL_DOWN),
426 UNIPHIER_PINCTRL_PIN(152, "XIRQ3", 152,
427 152, UNIPHIER_PIN_DRV_1BIT,
428 152, UNIPHIER_PIN_PULL_DOWN),
429 UNIPHIER_PINCTRL_PIN(153, "XIRQ4", 153,
430 153, UNIPHIER_PIN_DRV_1BIT,
431 153, UNIPHIER_PIN_PULL_DOWN),
432 UNIPHIER_PINCTRL_PIN(154, "XIRQ5", 154,
433 154, UNIPHIER_PIN_DRV_1BIT,
434 154, UNIPHIER_PIN_PULL_DOWN),
435 UNIPHIER_PINCTRL_PIN(155, "XIRQ6", 155,
436 155, UNIPHIER_PIN_DRV_1BIT,
437 155, UNIPHIER_PIN_PULL_DOWN),
438 UNIPHIER_PINCTRL_PIN(156, "XIRQ7", 156,
439 156, UNIPHIER_PIN_DRV_1BIT,
440 156, UNIPHIER_PIN_PULL_DOWN),
441 UNIPHIER_PINCTRL_PIN(157, "XIRQ8", 157,
442 157, UNIPHIER_PIN_DRV_1BIT,
443 157, UNIPHIER_PIN_PULL_DOWN),
444 UNIPHIER_PINCTRL_PIN(158, "AGCBS", 158,
445 158, UNIPHIER_PIN_DRV_1BIT,
446 158, UNIPHIER_PIN_PULL_DOWN),
447 UNIPHIER_PINCTRL_PIN(159, "XIRQ21", 159,
448 159, UNIPHIER_PIN_DRV_1BIT,
449 159, UNIPHIER_PIN_PULL_DOWN),
450 UNIPHIER_PINCTRL_PIN(160, "XIRQ22", 160,
451 160, UNIPHIER_PIN_DRV_1BIT,
452 160, UNIPHIER_PIN_PULL_DOWN),
453 UNIPHIER_PINCTRL_PIN(161, "XIRQ23", 161,
454 161, UNIPHIER_PIN_DRV_1BIT,
455 161, UNIPHIER_PIN_PULL_DOWN),
456 UNIPHIER_PINCTRL_PIN(162, "CH2CLK", 162,
457 162, UNIPHIER_PIN_DRV_1BIT,
458 162, UNIPHIER_PIN_PULL_DOWN),
459 UNIPHIER_PINCTRL_PIN(163, "CH2PSYNC", 163,
460 163, UNIPHIER_PIN_DRV_1BIT,
461 163, UNIPHIER_PIN_PULL_DOWN),
462 UNIPHIER_PINCTRL_PIN(164, "CH2VAL", 164,
463 164, UNIPHIER_PIN_DRV_1BIT,
464 164, UNIPHIER_PIN_PULL_DOWN),
465 UNIPHIER_PINCTRL_PIN(165, "CH2DATA", 165,
466 165, UNIPHIER_PIN_DRV_1BIT,
467 165, UNIPHIER_PIN_PULL_DOWN),
468 UNIPHIER_PINCTRL_PIN(166, "CK25O", 166,
469 166, UNIPHIER_PIN_DRV_1BIT,
470 166, UNIPHIER_PIN_PULL_DOWN),
471};
472
473static const unsigned emmc_pins[] = {18, 19, 20, 21, 22, 23, 24, 25};
474static const int emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0};
475static const unsigned emmc_dat8_pins[] = {26, 27, 28, 29};
476static const int emmc_dat8_muxvals[] = {0, 0, 0, 0};
477static const unsigned ether_rmii_pins[] = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
478 16, 17};
479static const int ether_rmii_muxvals[] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4};
480static const unsigned i2c0_pins[] = {63, 64};
481static const int i2c0_muxvals[] = {0, 0};
482static const unsigned i2c1_pins[] = {65, 66};
483static const int i2c1_muxvals[] = {0, 0};
484static const unsigned i2c3_pins[] = {67, 68};
485static const int i2c3_muxvals[] = {1, 1};
486static const unsigned i2c4_pins[] = {61, 62};
487static const int i2c4_muxvals[] = {1, 1};
488static const unsigned nand_pins[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
489 15, 16, 17};
490static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
491static const unsigned system_bus_pins[] = {1, 2, 6, 7, 8, 9, 10, 11, 12, 13,
492 14, 15, 16, 17};
493static const int system_bus_muxvals[] = {0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
494 2};
495static const unsigned system_bus_cs1_pins[] = {0};
496static const int system_bus_cs1_muxvals[] = {0};
497static const unsigned uart0_pins[] = {54, 55};
498static const int uart0_muxvals[] = {0, 0};
499static const unsigned uart1_pins[] = {58, 59};
500static const int uart1_muxvals[] = {1, 1};
501static const unsigned uart2_pins[] = {90, 91};
502static const int uart2_muxvals[] = {1, 1};
503static const unsigned uart3_pins[] = {94, 95};
504static const int uart3_muxvals[] = {1, 1};
505static const unsigned usb0_pins[] = {46, 47};
506static const int usb0_muxvals[] = {0, 0};
507static const unsigned usb1_pins[] = {48, 49};
508static const int usb1_muxvals[] = {0, 0};
509static const unsigned usb2_pins[] = {50, 51};
510static const int usb2_muxvals[] = {0, 0};
511static const unsigned port_range_pins[] = {
512 159, 160, 161, 162, 163, 164, 165, 166, /* PORT0x */
513 0, 1, 2, 3, 4, 5, 6, 7, /* PORT1x */
514 8, 9, 10, 11, 12, 13, 14, 15, /* PORT2x */
515 16, 17, 18, -1, -1, -1, -1, -1, /* PORT3x */
516 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT4x */
517 -1, -1, -1, 46, 47, 48, 49, 50, /* PORT5x */
518 51, -1, -1, 54, 55, 56, 57, 58, /* PORT6x */
519 59, 60, 69, 70, 71, 72, 73, 74, /* PORT7x */
520 75, 76, 77, 78, 79, 80, 81, 82, /* PORT8x */
521 83, 84, 85, 86, 87, 88, 89, 90, /* PORT9x */
522 91, 92, 93, 94, 95, 96, 97, 98, /* PORT10x */
523 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT11x */
524 99, 100, 101, 102, 103, 104, 105, 106, /* PORT12x */
525 107, 108, 109, 110, 111, 112, 113, 114, /* PORT13x */
526 115, 116, 117, 118, 119, 120, 121, 122, /* PORT14x */
527 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT15x */
528 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT16x */
529 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT17x */
530 61, 62, 63, 64, 65, 66, 67, 68, /* PORT18x */
531 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT19x */
532 123, 124, 125, 126, 127, 128, 129, 130, /* PORT20x */
533 131, 132, 133, 134, 135, 136, 137, 138, /* PORT21x */
534 139, 140, 141, 142, -1, -1, -1, -1, /* PORT22x */
535 147, 148, 149, 150, 151, 152, 153, 154, /* PORT23x */
536 155, 156, 157, 143, 144, 145, 146, 158, /* PORT24x */
537};
538static const int port_range_muxvals[] = {
539 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */
540 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */
541 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */
542 15, 15, 15, -1, -1, -1, -1, -1, /* PORT3x */
543 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT4x */
544 -1, -1, -1, 15, 15, 15, 15, 15, /* PORT5x */
545 15, -1, -1, 15, 15, 15, 15, 15, /* PORT6x */
546 15, 15, 15, 15, 15, 15, 15, 15, /* PORT7x */
547 15, 15, 15, 15, 15, 15, 15, 15, /* PORT8x */
548 15, 15, 15, 15, 15, 15, 15, 15, /* PORT9x */
549 15, 15, 15, 15, 15, 15, 15, 15, /* PORT10x */
550 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT11x */
551 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */
552 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */
553 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */
554 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT15x */
555 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT16x */
556 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT17x */
557 15, 15, 15, 15, 15, 15, 15, 15, /* PORT18x */
558 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT19x */
559 15, 15, 15, 15, 15, 15, 15, 15, /* PORT20x */
560 15, 15, 15, 15, 15, 15, 15, 15, /* PORT21x */
561 15, 15, 15, 15, -1, -1, -1, -1, /* PORT22x */
562 15, 15, 15, 15, 15, 15, 15, 15, /* PORT23x */
563 15, 15, 15, 15, 15, 15, 15, 15, /* PORT24x */
564};
565static const unsigned xirq_pins[] = {
566 149, 150, 151, 152, 153, 154, 155, 156, /* XIRQ0-7 */
567 157, 143, 144, 145, 85, 146, 158, 84, /* XIRQ8-15 */
568 141, 142, 148, 50, 51, 159, 160, 161, /* XIRQ16-23 */
569};
570static const int xirq_muxvals[] = {
571 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */
572 14, 14, 14, 14, 13, 14, 14, 13, /* XIRQ8-15 */
573 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */
574};
575static const unsigned xirq_alternatives_pins[] = {
576 94, 95, 96, 97, 98, 99, 100, 101, /* XIRQ0-7 */
577 102, 103, 104, 105, 106, 107, /* XIRQ8-11,13,14 */
578 108, 109, 110, 111, 112, 113, 114, 115, /* XIRQ16-23 */
579 9, 10, 11, 12, 13, 14, 15, 16, /* XIRQ4-11 */
580 17, 0, 1, 2, 3, 4, 5, 6, 7, 8, /* XIRQ13,14,16-23 */
581 139, 140, 135, 147, /* XIRQ17,18,21,22 */
582};
583static const int xirq_alternatives_muxvals[] = {
584 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */
585 14, 14, 14, 14, 14, 14, /* XIRQ8-11,13,14 */
586 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */
587 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ4-11 */
588 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ13,14,16-23 */
589 14, 14, 14, 14, /* XIRQ17,18,21,22 */
590};
591
592static const struct uniphier_pinctrl_group uniphier_ld11_groups[] = {
593 UNIPHIER_PINCTRL_GROUP(emmc),
594 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
595 UNIPHIER_PINCTRL_GROUP(ether_rmii),
596 UNIPHIER_PINCTRL_GROUP(i2c0),
597 UNIPHIER_PINCTRL_GROUP(i2c1),
598 UNIPHIER_PINCTRL_GROUP(i2c3),
599 UNIPHIER_PINCTRL_GROUP(i2c4),
600 UNIPHIER_PINCTRL_GROUP(nand),
601 UNIPHIER_PINCTRL_GROUP(system_bus),
602 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
603 UNIPHIER_PINCTRL_GROUP(uart0),
604 UNIPHIER_PINCTRL_GROUP(uart1),
605 UNIPHIER_PINCTRL_GROUP(uart2),
606 UNIPHIER_PINCTRL_GROUP(uart3),
607 UNIPHIER_PINCTRL_GROUP(usb0),
608 UNIPHIER_PINCTRL_GROUP(usb1),
609 UNIPHIER_PINCTRL_GROUP(usb2),
610 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range),
611 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq),
612 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_alternatives),
613 UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range, 0),
614 UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range, 1),
615 UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range, 2),
616 UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range, 3),
617 UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range, 4),
618 UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range, 5),
619 UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range, 6),
620 UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range, 7),
621 UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range, 8),
622 UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range, 9),
623 UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range, 10),
624 UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range, 11),
625 UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range, 12),
626 UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range, 13),
627 UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range, 14),
628 UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range, 15),
629 UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range, 16),
630 UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range, 17),
631 UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range, 18),
632 UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range, 19),
633 UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range, 20),
634 UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range, 21),
635 UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range, 22),
636 UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range, 23),
637 UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range, 24),
638 UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range, 25),
639 UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range, 26),
640 UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range, 43),
641 UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range, 44),
642 UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range, 45),
643 UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range, 46),
644 UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range, 47),
645 UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range, 48),
646 UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range, 51),
647 UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range, 52),
648 UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range, 53),
649 UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range, 54),
650 UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range, 55),
651 UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range, 56),
652 UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range, 57),
653 UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range, 58),
654 UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range, 59),
655 UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range, 60),
656 UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range, 61),
657 UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range, 62),
658 UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range, 63),
659 UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range, 64),
660 UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range, 65),
661 UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range, 66),
662 UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range, 67),
663 UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range, 68),
664 UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range, 69),
665 UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range, 70),
666 UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range, 71),
667 UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range, 72),
668 UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range, 73),
669 UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range, 74),
670 UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range, 75),
671 UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range, 76),
672 UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range, 77),
673 UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range, 78),
674 UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range, 79),
675 UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range, 80),
676 UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range, 81),
677 UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range, 82),
678 UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range, 83),
679 UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range, 84),
680 UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range, 85),
681 UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range, 86),
682 UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range, 87),
683 UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range, 96),
684 UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range, 97),
685 UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range, 98),
686 UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range, 99),
687 UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range, 100),
688 UNIPHIER_PINCTRL_GROUP_SINGLE(port125, port_range, 101),
689 UNIPHIER_PINCTRL_GROUP_SINGLE(port126, port_range, 102),
690 UNIPHIER_PINCTRL_GROUP_SINGLE(port127, port_range, 103),
691 UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range, 104),
692 UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range, 105),
693 UNIPHIER_PINCTRL_GROUP_SINGLE(port132, port_range, 106),
694 UNIPHIER_PINCTRL_GROUP_SINGLE(port133, port_range, 107),
695 UNIPHIER_PINCTRL_GROUP_SINGLE(port134, port_range, 108),
696 UNIPHIER_PINCTRL_GROUP_SINGLE(port135, port_range, 109),
697 UNIPHIER_PINCTRL_GROUP_SINGLE(port136, port_range, 110),
698 UNIPHIER_PINCTRL_GROUP_SINGLE(port137, port_range, 111),
699 UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range, 112),
700 UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range, 113),
701 UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range, 114),
702 UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range, 115),
703 UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range, 116),
704 UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range, 117),
705 UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range, 118),
706 UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range, 119),
707 UNIPHIER_PINCTRL_GROUP_SINGLE(port180, port_range, 144),
708 UNIPHIER_PINCTRL_GROUP_SINGLE(port181, port_range, 145),
709 UNIPHIER_PINCTRL_GROUP_SINGLE(port182, port_range, 146),
710 UNIPHIER_PINCTRL_GROUP_SINGLE(port183, port_range, 147),
711 UNIPHIER_PINCTRL_GROUP_SINGLE(port184, port_range, 148),
712 UNIPHIER_PINCTRL_GROUP_SINGLE(port185, port_range, 149),
713 UNIPHIER_PINCTRL_GROUP_SINGLE(port186, port_range, 150),
714 UNIPHIER_PINCTRL_GROUP_SINGLE(port187, port_range, 151),
715 UNIPHIER_PINCTRL_GROUP_SINGLE(port200, port_range, 160),
716 UNIPHIER_PINCTRL_GROUP_SINGLE(port201, port_range, 161),
717 UNIPHIER_PINCTRL_GROUP_SINGLE(port202, port_range, 162),
718 UNIPHIER_PINCTRL_GROUP_SINGLE(port203, port_range, 163),
719 UNIPHIER_PINCTRL_GROUP_SINGLE(port204, port_range, 164),
720 UNIPHIER_PINCTRL_GROUP_SINGLE(port205, port_range, 165),
721 UNIPHIER_PINCTRL_GROUP_SINGLE(port206, port_range, 166),
722 UNIPHIER_PINCTRL_GROUP_SINGLE(port207, port_range, 167),
723 UNIPHIER_PINCTRL_GROUP_SINGLE(port210, port_range, 168),
724 UNIPHIER_PINCTRL_GROUP_SINGLE(port211, port_range, 169),
725 UNIPHIER_PINCTRL_GROUP_SINGLE(port212, port_range, 170),
726 UNIPHIER_PINCTRL_GROUP_SINGLE(port213, port_range, 171),
727 UNIPHIER_PINCTRL_GROUP_SINGLE(port214, port_range, 172),
728 UNIPHIER_PINCTRL_GROUP_SINGLE(port215, port_range, 173),
729 UNIPHIER_PINCTRL_GROUP_SINGLE(port216, port_range, 174),
730 UNIPHIER_PINCTRL_GROUP_SINGLE(port217, port_range, 175),
731 UNIPHIER_PINCTRL_GROUP_SINGLE(port220, port_range, 176),
732 UNIPHIER_PINCTRL_GROUP_SINGLE(port221, port_range, 177),
733 UNIPHIER_PINCTRL_GROUP_SINGLE(port222, port_range, 178),
734 UNIPHIER_PINCTRL_GROUP_SINGLE(port223, port_range, 179),
735 UNIPHIER_PINCTRL_GROUP_SINGLE(port230, port_range, 184),
736 UNIPHIER_PINCTRL_GROUP_SINGLE(port231, port_range, 185),
737 UNIPHIER_PINCTRL_GROUP_SINGLE(port232, port_range, 186),
738 UNIPHIER_PINCTRL_GROUP_SINGLE(port233, port_range, 187),
739 UNIPHIER_PINCTRL_GROUP_SINGLE(port234, port_range, 188),
740 UNIPHIER_PINCTRL_GROUP_SINGLE(port235, port_range, 189),
741 UNIPHIER_PINCTRL_GROUP_SINGLE(port236, port_range, 190),
742 UNIPHIER_PINCTRL_GROUP_SINGLE(port237, port_range, 191),
743 UNIPHIER_PINCTRL_GROUP_SINGLE(port240, port_range, 192),
744 UNIPHIER_PINCTRL_GROUP_SINGLE(port241, port_range, 193),
745 UNIPHIER_PINCTRL_GROUP_SINGLE(port242, port_range, 194),
746 UNIPHIER_PINCTRL_GROUP_SINGLE(port243, port_range, 195),
747 UNIPHIER_PINCTRL_GROUP_SINGLE(port244, port_range, 196),
748 UNIPHIER_PINCTRL_GROUP_SINGLE(port245, port_range, 197),
749 UNIPHIER_PINCTRL_GROUP_SINGLE(port246, port_range, 198),
750 UNIPHIER_PINCTRL_GROUP_SINGLE(port247, port_range, 199),
751 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq, 0),
752 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq, 1),
753 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq, 2),
754 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq, 3),
755 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq, 4),
756 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq, 5),
757 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq, 6),
758 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq, 7),
759 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq, 8),
760 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq, 9),
761 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq, 10),
762 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq, 11),
763 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq, 12),
764 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq13, xirq, 13),
765 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq, 14),
766 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq, 15),
767 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq16, xirq, 16),
768 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq17, xirq, 17),
769 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq18, xirq, 18),
770 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq19, xirq, 19),
771 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq20, xirq, 20),
772 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq21, xirq, 21),
773 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq22, xirq, 22),
774 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq23, xirq, 23),
775 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0b, xirq_alternatives, 0),
776 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1b, xirq_alternatives, 1),
777 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2b, xirq_alternatives, 2),
778 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3b, xirq_alternatives, 3),
779 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4b, xirq_alternatives, 4),
780 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5b, xirq_alternatives, 5),
781 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6b, xirq_alternatives, 6),
782 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7b, xirq_alternatives, 7),
783 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8b, xirq_alternatives, 8),
784 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9b, xirq_alternatives, 9),
785 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10b, xirq_alternatives, 10),
786 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11b, xirq_alternatives, 11),
787 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq13b, xirq_alternatives, 12),
788 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14b, xirq_alternatives, 13),
789 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq16b, xirq_alternatives, 14),
790 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq17b, xirq_alternatives, 15),
791 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq18b, xirq_alternatives, 16),
792 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq19b, xirq_alternatives, 17),
793 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq20b, xirq_alternatives, 18),
794 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq21b, xirq_alternatives, 19),
795 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq22b, xirq_alternatives, 20),
796 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq23b, xirq_alternatives, 21),
797 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4c, xirq_alternatives, 22),
798 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5c, xirq_alternatives, 23),
799 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6c, xirq_alternatives, 24),
800 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7c, xirq_alternatives, 25),
801 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8c, xirq_alternatives, 26),
802 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9c, xirq_alternatives, 27),
803 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10c, xirq_alternatives, 28),
804 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11c, xirq_alternatives, 29),
805 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq13c, xirq_alternatives, 30),
806 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14c, xirq_alternatives, 31),
807 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq16c, xirq_alternatives, 32),
808 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq17c, xirq_alternatives, 33),
809 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq18c, xirq_alternatives, 34),
810 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq19c, xirq_alternatives, 35),
811 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq20c, xirq_alternatives, 36),
812 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq21c, xirq_alternatives, 37),
813 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq22c, xirq_alternatives, 38),
814 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq23c, xirq_alternatives, 39),
815 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq17d, xirq_alternatives, 40),
816 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq18d, xirq_alternatives, 41),
817 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq21d, xirq_alternatives, 42),
818 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq22d, xirq_alternatives, 43),
819};
820
821static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
822static const char * const ether_rmii_groups[] = {"ether_rmii"};
823static const char * const i2c0_groups[] = {"i2c0"};
824static const char * const i2c1_groups[] = {"i2c1"};
825static const char * const i2c3_groups[] = {"i2c3"};
826static const char * const i2c4_groups[] = {"i2c4"};
827static const char * const nand_groups[] = {"nand"};
828static const char * const system_bus_groups[] = {"system_bus",
829 "system_bus_cs1"};
830static const char * const uart0_groups[] = {"uart0"};
831static const char * const uart1_groups[] = {"uart1"};
832static const char * const uart2_groups[] = {"uart2"};
833static const char * const uart3_groups[] = {"uart3"};
834static const char * const usb0_groups[] = {"usb0"};
835static const char * const usb1_groups[] = {"usb1"};
836static const char * const usb2_groups[] = {"usb2"};
837static const char * const port_groups[] = {
838 "port00", "port01", "port02", "port03",
839 "port04", "port05", "port06", "port07",
840 "port10", "port11", "port12", "port13",
841 "port14", "port15", "port16", "port17",
842 "port20", "port21", "port22", "port23",
843 "port24", "port25", "port26", "port27",
844 "port30", "port31", "port32",
845 /* port33-52 missing */ "port53",
846 "port54", "port55", "port56", "port57",
847 "port60", /* port61-62 missing*/ "port63",
848 "port64", "port65", "port66", "port67",
849 "port70", "port71", "port72", "port73",
850 "port74", "port75", "port76", "port77",
851 "port80", "port81", "port82", "port83",
852 "port84", "port85", "port86", "port87",
853 "port90", "port91", "port92", "port93",
854 "port94", "port95", "port96", "port97",
855 "port100", "port101", "port102", "port103",
856 "port104", "port105", "port106", "port107",
857 /* port110-117 missing */
858 "port120", "port121", "port122", "port123",
859 "port124", "port125", "port126", "port127",
860 "port130", "port131", "port132", "port133",
861 "port134", "port135", "port136", "port137",
862 "port140", "port141", "port142", "port143",
863 "port144", "port145", "port146", "port147",
864 /* port150-177 missing */
865 "port180", "port181", "port182", "port183",
866 "port184", "port185", "port186", "port187",
867 /* port190-197 missing */
868 "port200", "port201", "port202", "port203",
869 "port204", "port205", "port206", "port207",
870 "port210", "port211", "port212", "port213",
871 "port214", "port215", "port216", "port217",
872 "port220", "port221", "port222", "port223",
873 /* port224-227 missing */
874 "port230", "port231", "port232", "port233",
875 "port234", "port235", "port236", "port237",
876 "port240", "port241", "port242", "port243",
877 "port244", "port245", "port246", "port247",
878};
879static const char * const xirq_groups[] = {
880 "xirq0", "xirq1", "xirq2", "xirq3",
881 "xirq4", "xirq5", "xirq6", "xirq7",
882 "xirq8", "xirq9", "xirq10", "xirq11",
883 "xirq12", "xirq13", "xirq14", "xirq15",
884 "xirq16", "xirq17", "xirq18", "xirq19",
885 "xirq20", "xirq21", "xirq22", "xirq23",
886 "xirq0b", "xirq1b", "xirq2b", "xirq3b",
887 "xirq4b", "xirq5b", "xirq6b", "xirq7b",
888 "xirq8b", "xirq9b", "xirq10b", "xirq11b",
889 /* none */ "xirq13b", "xirq14b", /* none */
890 "xirq16b", "xirq17b", "xirq18b", "xirq19b",
891 "xirq20b", "xirq21b", "xirq22b", "xirq23b",
892 "xirq4c", "xirq5c", "xirq6c", "xirq7c",
893 "xirq8c", "xirq9c", "xirq10c", "xirq11c",
894 /* none */ "xirq13c", "xirq14c", /* none */
895 "xirq16c", "xirq17c", "xirq18c", "xirq19c",
896 "xirq20c", "xirq21c", "xirq22c", "xirq23c",
897 "xirq17d", "xirq18d", "xirq21d", "xirq22d",
898};
899
900static const struct uniphier_pinmux_function uniphier_ld11_functions[] = {
901 UNIPHIER_PINMUX_FUNCTION(emmc),
902 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
903 UNIPHIER_PINMUX_FUNCTION(i2c0),
904 UNIPHIER_PINMUX_FUNCTION(i2c1),
905 UNIPHIER_PINMUX_FUNCTION(i2c3),
906 UNIPHIER_PINMUX_FUNCTION(i2c4),
907 UNIPHIER_PINMUX_FUNCTION(nand),
908 UNIPHIER_PINMUX_FUNCTION(system_bus),
909 UNIPHIER_PINMUX_FUNCTION(uart0),
910 UNIPHIER_PINMUX_FUNCTION(uart1),
911 UNIPHIER_PINMUX_FUNCTION(uart2),
912 UNIPHIER_PINMUX_FUNCTION(uart3),
913 UNIPHIER_PINMUX_FUNCTION(usb0),
914 UNIPHIER_PINMUX_FUNCTION(usb1),
915 UNIPHIER_PINMUX_FUNCTION(usb2),
916 UNIPHIER_PINMUX_FUNCTION(port),
917 UNIPHIER_PINMUX_FUNCTION(xirq),
918};
919
920static struct uniphier_pinctrl_socdata uniphier_ld11_pindata = {
921 .pins = uniphier_ld11_pins,
922 .npins = ARRAY_SIZE(uniphier_ld11_pins),
923 .groups = uniphier_ld11_groups,
924 .groups_count = ARRAY_SIZE(uniphier_ld11_groups),
925 .functions = uniphier_ld11_functions,
926 .functions_count = ARRAY_SIZE(uniphier_ld11_functions),
927 .caps = UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL,
928};
929
930static int uniphier_ld11_pinctrl_probe(struct platform_device *pdev)
931{
932 return uniphier_pinctrl_probe(pdev, &uniphier_ld11_pindata);
933}
934
935static const struct of_device_id uniphier_ld11_pinctrl_match[] = {
936 { .compatible = "socionext,uniphier-ld11-pinctrl" },
937 { /* sentinel */ }
938};
939MODULE_DEVICE_TABLE(of, uniphier_ld11_pinctrl_match);
940
941static struct platform_driver uniphier_ld11_pinctrl_driver = {
942 .probe = uniphier_ld11_pinctrl_probe,
943 .driver = {
944 .name = "uniphier-ld11-pinctrl",
945 .of_match_table = uniphier_ld11_pinctrl_match,
946 },
947};
948module_platform_driver(uniphier_ld11_pinctrl_driver);
949
950MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
951MODULE_DESCRIPTION("UniPhier PH1-LD11 pinctrl driver");
952MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
new file mode 100644
index 000000000000..aa8bd9794683
--- /dev/null
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
@@ -0,0 +1,1050 @@
1/*
2 * Copyright (C) 2016 Socionext Inc.
3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#include <linux/kernel.h>
17#include <linux/module.h>
18#include <linux/pinctrl/pinctrl.h>
19#include <linux/platform_device.h>
20
21#include "pinctrl-uniphier.h"
22
23static const struct pinctrl_pin_desc uniphier_ld20_pins[] = {
24 UNIPHIER_PINCTRL_PIN(0, "XECS1", 0,
25 0, UNIPHIER_PIN_DRV_3BIT,
26 0, UNIPHIER_PIN_PULL_UP),
27 UNIPHIER_PINCTRL_PIN(1, "ERXW", 1,
28 1, UNIPHIER_PIN_DRV_3BIT,
29 1, UNIPHIER_PIN_PULL_UP),
30 UNIPHIER_PINCTRL_PIN(2, "XERWE1", 2,
31 2, UNIPHIER_PIN_DRV_3BIT,
32 2, UNIPHIER_PIN_PULL_UP),
33 UNIPHIER_PINCTRL_PIN(3, "XNFWP", 3,
34 3, UNIPHIER_PIN_DRV_3BIT,
35 3, UNIPHIER_PIN_PULL_DOWN),
36 UNIPHIER_PINCTRL_PIN(4, "XNFCE0", 4,
37 4, UNIPHIER_PIN_DRV_3BIT,
38 4, UNIPHIER_PIN_PULL_UP),
39 UNIPHIER_PINCTRL_PIN(5, "NFRYBY0", 5,
40 5, UNIPHIER_PIN_DRV_3BIT,
41 5, UNIPHIER_PIN_PULL_UP),
42 UNIPHIER_PINCTRL_PIN(6, "XNFRE", 6,
43 6, UNIPHIER_PIN_DRV_3BIT,
44 6, UNIPHIER_PIN_PULL_UP),
45 UNIPHIER_PINCTRL_PIN(7, "XNFWE", 7,
46 7, UNIPHIER_PIN_DRV_3BIT,
47 7, UNIPHIER_PIN_PULL_UP),
48 UNIPHIER_PINCTRL_PIN(8, "NFALE", 8,
49 8, UNIPHIER_PIN_DRV_3BIT,
50 8, UNIPHIER_PIN_PULL_UP),
51 UNIPHIER_PINCTRL_PIN(9, "NFCLE", 9,
52 9, UNIPHIER_PIN_DRV_3BIT,
53 9, UNIPHIER_PIN_PULL_UP),
54 UNIPHIER_PINCTRL_PIN(10, "NFD0", 10,
55 10, UNIPHIER_PIN_DRV_3BIT,
56 10, UNIPHIER_PIN_PULL_UP),
57 UNIPHIER_PINCTRL_PIN(11, "NFD1", 11,
58 11, UNIPHIER_PIN_DRV_3BIT,
59 11, UNIPHIER_PIN_PULL_UP),
60 UNIPHIER_PINCTRL_PIN(12, "NFD2", 12,
61 12, UNIPHIER_PIN_DRV_3BIT,
62 12, UNIPHIER_PIN_PULL_UP),
63 UNIPHIER_PINCTRL_PIN(13, "NFD3", 13,
64 13, UNIPHIER_PIN_DRV_3BIT,
65 13, UNIPHIER_PIN_PULL_UP),
66 UNIPHIER_PINCTRL_PIN(14, "NFD4", 14,
67 14, UNIPHIER_PIN_DRV_3BIT,
68 14, UNIPHIER_PIN_PULL_UP),
69 UNIPHIER_PINCTRL_PIN(15, "NFD5", 15,
70 15, UNIPHIER_PIN_DRV_3BIT,
71 15, UNIPHIER_PIN_PULL_UP),
72 UNIPHIER_PINCTRL_PIN(16, "NFD6", 16,
73 16, UNIPHIER_PIN_DRV_3BIT,
74 16, UNIPHIER_PIN_PULL_UP),
75 UNIPHIER_PINCTRL_PIN(17, "NFD7", 17,
76 17, UNIPHIER_PIN_DRV_3BIT,
77 17, UNIPHIER_PIN_PULL_UP),
78 UNIPHIER_PINCTRL_PIN(18, "XERST", 18,
79 0, UNIPHIER_PIN_DRV_2BIT,
80 18, UNIPHIER_PIN_PULL_UP),
81 UNIPHIER_PINCTRL_PIN(19, "MMCCLK", 19,
82 1, UNIPHIER_PIN_DRV_2BIT,
83 19, UNIPHIER_PIN_PULL_UP),
84 UNIPHIER_PINCTRL_PIN(20, "MMCCMD", 20,
85 2, UNIPHIER_PIN_DRV_2BIT,
86 20, UNIPHIER_PIN_PULL_UP),
87 UNIPHIER_PINCTRL_PIN(21, "MMCDS", 21,
88 3, UNIPHIER_PIN_DRV_2BIT,
89 21, UNIPHIER_PIN_PULL_UP),
90 UNIPHIER_PINCTRL_PIN(22, "MMCDAT0", 22,
91 4, UNIPHIER_PIN_DRV_2BIT,
92 22, UNIPHIER_PIN_PULL_UP),
93 UNIPHIER_PINCTRL_PIN(23, "MMCDAT1", 23,
94 5, UNIPHIER_PIN_DRV_2BIT,
95 23, UNIPHIER_PIN_PULL_UP),
96 UNIPHIER_PINCTRL_PIN(24, "MMCDAT2", 24,
97 6, UNIPHIER_PIN_DRV_2BIT,
98 24, UNIPHIER_PIN_PULL_UP),
99 UNIPHIER_PINCTRL_PIN(25, "MMCDAT3", 25,
100 7, UNIPHIER_PIN_DRV_2BIT,
101 25, UNIPHIER_PIN_PULL_UP),
102 UNIPHIER_PINCTRL_PIN(26, "MMCDAT4", 26,
103 8, UNIPHIER_PIN_DRV_2BIT,
104 26, UNIPHIER_PIN_PULL_UP),
105 UNIPHIER_PINCTRL_PIN(27, "MMCDAT5", 27,
106 9, UNIPHIER_PIN_DRV_2BIT,
107 27, UNIPHIER_PIN_PULL_UP),
108 UNIPHIER_PINCTRL_PIN(28, "MMCDAT6", 28,
109 10, UNIPHIER_PIN_DRV_2BIT,
110 28, UNIPHIER_PIN_PULL_UP),
111 UNIPHIER_PINCTRL_PIN(29, "MMCDAT7", 29,
112 11, UNIPHIER_PIN_DRV_2BIT,
113 29, UNIPHIER_PIN_PULL_UP),
114 UNIPHIER_PINCTRL_PIN(30, "MDC", 30,
115 18, UNIPHIER_PIN_DRV_3BIT,
116 30, UNIPHIER_PIN_PULL_DOWN),
117 UNIPHIER_PINCTRL_PIN(31, "MDIO", 31,
118 19, UNIPHIER_PIN_DRV_3BIT,
119 31, UNIPHIER_PIN_PULL_DOWN),
120 UNIPHIER_PINCTRL_PIN(32, "MDIO_INTL", 32,
121 20, UNIPHIER_PIN_DRV_3BIT,
122 32, UNIPHIER_PIN_PULL_DOWN),
123 UNIPHIER_PINCTRL_PIN(33, "PHYRSTL", 33,
124 21, UNIPHIER_PIN_DRV_3BIT,
125 33, UNIPHIER_PIN_PULL_DOWN),
126 UNIPHIER_PINCTRL_PIN(34, "RGMII_RXCLK", 34,
127 22, UNIPHIER_PIN_DRV_3BIT,
128 34, UNIPHIER_PIN_PULL_DOWN),
129 UNIPHIER_PINCTRL_PIN(35, "RGMII_RXD0", 35,
130 23, UNIPHIER_PIN_DRV_3BIT,
131 35, UNIPHIER_PIN_PULL_DOWN),
132 UNIPHIER_PINCTRL_PIN(36, "RGMII_RXD1", 36,
133 24, UNIPHIER_PIN_DRV_3BIT,
134 36, UNIPHIER_PIN_PULL_DOWN),
135 UNIPHIER_PINCTRL_PIN(37, "RGMII_RXD2", 37,
136 25, UNIPHIER_PIN_DRV_3BIT,
137 37, UNIPHIER_PIN_PULL_DOWN),
138 UNIPHIER_PINCTRL_PIN(38, "RGMII_RXD3", 38,
139 26, UNIPHIER_PIN_DRV_3BIT,
140 38, UNIPHIER_PIN_PULL_DOWN),
141 UNIPHIER_PINCTRL_PIN(39, "RGMII_RXCTL", 39,
142 27, UNIPHIER_PIN_DRV_3BIT,
143 39, UNIPHIER_PIN_PULL_DOWN),
144 UNIPHIER_PINCTRL_PIN(40, "RGMII_TXCLK", 40,
145 28, UNIPHIER_PIN_DRV_3BIT,
146 40, UNIPHIER_PIN_PULL_DOWN),
147 UNIPHIER_PINCTRL_PIN(41, "RGMII_TXD0", 41,
148 29, UNIPHIER_PIN_DRV_3BIT,
149 41, UNIPHIER_PIN_PULL_DOWN),
150 UNIPHIER_PINCTRL_PIN(42, "RGMII_TXD1", 42,
151 30, UNIPHIER_PIN_DRV_3BIT,
152 42, UNIPHIER_PIN_PULL_DOWN),
153 UNIPHIER_PINCTRL_PIN(43, "RGMII_TXD2", 43,
154 31, UNIPHIER_PIN_DRV_3BIT,
155 43, UNIPHIER_PIN_PULL_DOWN),
156 UNIPHIER_PINCTRL_PIN(44, "RGMII_TXD3", 44,
157 32, UNIPHIER_PIN_DRV_3BIT,
158 44, UNIPHIER_PIN_PULL_DOWN),
159 UNIPHIER_PINCTRL_PIN(45, "RGMII_TXCTL", 45,
160 33, UNIPHIER_PIN_DRV_3BIT,
161 45, UNIPHIER_PIN_PULL_DOWN),
162 UNIPHIER_PINCTRL_PIN(46, "USB0VBUS", 46,
163 34, UNIPHIER_PIN_DRV_3BIT,
164 46, UNIPHIER_PIN_PULL_DOWN),
165 UNIPHIER_PINCTRL_PIN(47, "USB0OD", 47,
166 35, UNIPHIER_PIN_DRV_3BIT,
167 47, UNIPHIER_PIN_PULL_UP),
168 UNIPHIER_PINCTRL_PIN(48, "USB1VBUS", 48,
169 36, UNIPHIER_PIN_DRV_3BIT,
170 48, UNIPHIER_PIN_PULL_DOWN),
171 UNIPHIER_PINCTRL_PIN(49, "USB1OD", 49,
172 37, UNIPHIER_PIN_DRV_3BIT,
173 49, UNIPHIER_PIN_PULL_UP),
174 UNIPHIER_PINCTRL_PIN(50, "USB2VBUS", 50,
175 38, UNIPHIER_PIN_DRV_3BIT,
176 50, UNIPHIER_PIN_PULL_DOWN),
177 UNIPHIER_PINCTRL_PIN(51, "USB2OD", 51,
178 39, UNIPHIER_PIN_DRV_3BIT,
179 51, UNIPHIER_PIN_PULL_UP),
180 UNIPHIER_PINCTRL_PIN(52, "USB3VBUS", 52,
181 40, UNIPHIER_PIN_DRV_3BIT,
182 52, UNIPHIER_PIN_PULL_DOWN),
183 UNIPHIER_PINCTRL_PIN(53, "USB3OD", 53,
184 41, UNIPHIER_PIN_DRV_3BIT,
185 53, UNIPHIER_PIN_PULL_UP),
186 UNIPHIER_PINCTRL_PIN(54, "TXD0", 54,
187 42, UNIPHIER_PIN_DRV_3BIT,
188 54, UNIPHIER_PIN_PULL_UP),
189 UNIPHIER_PINCTRL_PIN(55, "RXD0", 55,
190 43, UNIPHIER_PIN_DRV_3BIT,
191 55, UNIPHIER_PIN_PULL_UP),
192 UNIPHIER_PINCTRL_PIN(56, "SPISYNC0", 56,
193 44, UNIPHIER_PIN_DRV_3BIT,
194 56, UNIPHIER_PIN_PULL_DOWN),
195 UNIPHIER_PINCTRL_PIN(57, "SPISCLK0", 57,
196 45, UNIPHIER_PIN_DRV_3BIT,
197 57, UNIPHIER_PIN_PULL_DOWN),
198 UNIPHIER_PINCTRL_PIN(58, "SPITXD0", 58,
199 46, UNIPHIER_PIN_DRV_3BIT,
200 58, UNIPHIER_PIN_PULL_DOWN),
201 UNIPHIER_PINCTRL_PIN(59, "SPIRXD0", 59,
202 47, UNIPHIER_PIN_DRV_3BIT,
203 59, UNIPHIER_PIN_PULL_DOWN),
204 UNIPHIER_PINCTRL_PIN(60, "AGCI", 60,
205 48, UNIPHIER_PIN_DRV_3BIT,
206 60, UNIPHIER_PIN_PULL_DOWN),
207 UNIPHIER_PINCTRL_PIN(61, "DMDSDA0", 61,
208 -1, UNIPHIER_PIN_DRV_FIXED4,
209 -1, UNIPHIER_PIN_PULL_NONE),
210 UNIPHIER_PINCTRL_PIN(62, "DMDSCL0", 62,
211 -1, UNIPHIER_PIN_DRV_FIXED4,
212 -1, UNIPHIER_PIN_PULL_NONE),
213 UNIPHIER_PINCTRL_PIN(63, "SDA0", 63,
214 -1, UNIPHIER_PIN_DRV_FIXED4,
215 -1, UNIPHIER_PIN_PULL_NONE),
216 UNIPHIER_PINCTRL_PIN(64, "SCL0", 64,
217 -1, UNIPHIER_PIN_DRV_FIXED4,
218 -1, UNIPHIER_PIN_PULL_NONE),
219 UNIPHIER_PINCTRL_PIN(65, "SDA1", 65,
220 -1, UNIPHIER_PIN_DRV_FIXED4,
221 -1, UNIPHIER_PIN_PULL_NONE),
222 UNIPHIER_PINCTRL_PIN(66, "SCL1", 66,
223 -1, UNIPHIER_PIN_DRV_FIXED4,
224 -1, UNIPHIER_PIN_PULL_NONE),
225 UNIPHIER_PINCTRL_PIN(67, "HIN", 67,
226 -1, UNIPHIER_PIN_DRV_FIXED4,
227 -1, UNIPHIER_PIN_PULL_NONE),
228 UNIPHIER_PINCTRL_PIN(68, "VIN", 68,
229 -1, UNIPHIER_PIN_DRV_FIXED4,
230 -1, UNIPHIER_PIN_PULL_NONE),
231 UNIPHIER_PINCTRL_PIN(69, "PCA00", 69,
232 49, UNIPHIER_PIN_DRV_3BIT,
233 69, UNIPHIER_PIN_PULL_DOWN),
234 UNIPHIER_PINCTRL_PIN(70, "PCA01", 70,
235 50, UNIPHIER_PIN_DRV_3BIT,
236 70, UNIPHIER_PIN_PULL_DOWN),
237 UNIPHIER_PINCTRL_PIN(71, "PCA02", 71,
238 51, UNIPHIER_PIN_DRV_3BIT,
239 71, UNIPHIER_PIN_PULL_DOWN),
240 UNIPHIER_PINCTRL_PIN(72, "PCA03", 72,
241 52, UNIPHIER_PIN_DRV_3BIT,
242 72, UNIPHIER_PIN_PULL_DOWN),
243 UNIPHIER_PINCTRL_PIN(73, "PCA04", 73,
244 53, UNIPHIER_PIN_DRV_3BIT,
245 73, UNIPHIER_PIN_PULL_DOWN),
246 UNIPHIER_PINCTRL_PIN(74, "PCA05", 74,
247 54, UNIPHIER_PIN_DRV_3BIT,
248 74, UNIPHIER_PIN_PULL_DOWN),
249 UNIPHIER_PINCTRL_PIN(75, "PCA06", 75,
250 55, UNIPHIER_PIN_DRV_3BIT,
251 75, UNIPHIER_PIN_PULL_DOWN),
252 UNIPHIER_PINCTRL_PIN(76, "PCA07", 76,
253 56, UNIPHIER_PIN_DRV_3BIT,
254 76, UNIPHIER_PIN_PULL_DOWN),
255 UNIPHIER_PINCTRL_PIN(77, "PCA08", 77,
256 57, UNIPHIER_PIN_DRV_3BIT,
257 77, UNIPHIER_PIN_PULL_DOWN),
258 UNIPHIER_PINCTRL_PIN(78, "PCA09", 78,
259 58, UNIPHIER_PIN_DRV_3BIT,
260 78, UNIPHIER_PIN_PULL_DOWN),
261 UNIPHIER_PINCTRL_PIN(79, "PCA10", 79,
262 59, UNIPHIER_PIN_DRV_3BIT,
263 79, UNIPHIER_PIN_PULL_DOWN),
264 UNIPHIER_PINCTRL_PIN(80, "PCA11", 80,
265 60, UNIPHIER_PIN_DRV_3BIT,
266 80, UNIPHIER_PIN_PULL_DOWN),
267 UNIPHIER_PINCTRL_PIN(81, "PCA12", 81,
268 61, UNIPHIER_PIN_DRV_3BIT,
269 81, UNIPHIER_PIN_PULL_DOWN),
270 UNIPHIER_PINCTRL_PIN(82, "PCA13", 82,
271 62, UNIPHIER_PIN_DRV_3BIT,
272 82, UNIPHIER_PIN_PULL_DOWN),
273 UNIPHIER_PINCTRL_PIN(83, "PCA14", 83,
274 63, UNIPHIER_PIN_DRV_3BIT,
275 83, UNIPHIER_PIN_PULL_DOWN),
276 UNIPHIER_PINCTRL_PIN(84, "PC0READY", 84,
277 0, UNIPHIER_PIN_DRV_1BIT,
278 84, UNIPHIER_PIN_PULL_DOWN),
279 UNIPHIER_PINCTRL_PIN(85, "PC0CD1", 85,
280 1, UNIPHIER_PIN_DRV_1BIT,
281 85, UNIPHIER_PIN_PULL_DOWN),
282 UNIPHIER_PINCTRL_PIN(86, "PC0CD2", 86,
283 2, UNIPHIER_PIN_DRV_1BIT,
284 86, UNIPHIER_PIN_PULL_DOWN),
285 UNIPHIER_PINCTRL_PIN(87, "PC0WAIT", 87,
286 3, UNIPHIER_PIN_DRV_1BIT,
287 87, UNIPHIER_PIN_PULL_DOWN),
288 UNIPHIER_PINCTRL_PIN(88, "PC0RESET", 88,
289 4, UNIPHIER_PIN_DRV_1BIT,
290 88, UNIPHIER_PIN_PULL_DOWN),
291 UNIPHIER_PINCTRL_PIN(89, "PC0CE1", 89,
292 5, UNIPHIER_PIN_DRV_1BIT,
293 89, UNIPHIER_PIN_PULL_DOWN),
294 UNIPHIER_PINCTRL_PIN(90, "PC0WE", 90,
295 6, UNIPHIER_PIN_DRV_1BIT,
296 90, UNIPHIER_PIN_PULL_DOWN),
297 UNIPHIER_PINCTRL_PIN(91, "PC0OE", 91,
298 7, UNIPHIER_PIN_DRV_1BIT,
299 91, UNIPHIER_PIN_PULL_DOWN),
300 UNIPHIER_PINCTRL_PIN(92, "PC0IOWR", 92,
301 8, UNIPHIER_PIN_DRV_1BIT,
302 92, UNIPHIER_PIN_PULL_DOWN),
303 UNIPHIER_PINCTRL_PIN(93, "PC0IORD", 93,
304 9, UNIPHIER_PIN_DRV_1BIT,
305 93, UNIPHIER_PIN_PULL_DOWN),
306 UNIPHIER_PINCTRL_PIN(94, "PCD00", 94,
307 10, UNIPHIER_PIN_DRV_1BIT,
308 94, UNIPHIER_PIN_PULL_DOWN),
309 UNIPHIER_PINCTRL_PIN(95, "PCD01", 95,
310 11, UNIPHIER_PIN_DRV_1BIT,
311 95, UNIPHIER_PIN_PULL_DOWN),
312 UNIPHIER_PINCTRL_PIN(96, "PCD02", 96,
313 12, UNIPHIER_PIN_DRV_1BIT,
314 96, UNIPHIER_PIN_PULL_DOWN),
315 UNIPHIER_PINCTRL_PIN(97, "PCD03", 97,
316 13, UNIPHIER_PIN_DRV_1BIT,
317 97, UNIPHIER_PIN_PULL_DOWN),
318 UNIPHIER_PINCTRL_PIN(98, "PCD04", 98,
319 14, UNIPHIER_PIN_DRV_1BIT,
320 98, UNIPHIER_PIN_PULL_DOWN),
321 UNIPHIER_PINCTRL_PIN(99, "PCD05", 99,
322 15, UNIPHIER_PIN_DRV_1BIT,
323 99, UNIPHIER_PIN_PULL_DOWN),
324 UNIPHIER_PINCTRL_PIN(100, "PCD06", 100,
325 16, UNIPHIER_PIN_DRV_1BIT,
326 100, UNIPHIER_PIN_PULL_DOWN),
327 UNIPHIER_PINCTRL_PIN(101, "PCD07", 101,
328 17, UNIPHIER_PIN_DRV_1BIT,
329 101, UNIPHIER_PIN_PULL_DOWN),
330 UNIPHIER_PINCTRL_PIN(102, "HS0BCLKIN", 102,
331 18, UNIPHIER_PIN_DRV_1BIT,
332 102, UNIPHIER_PIN_PULL_DOWN),
333 UNIPHIER_PINCTRL_PIN(103, "HS0SYNCIN", 103,
334 19, UNIPHIER_PIN_DRV_1BIT,
335 103, UNIPHIER_PIN_PULL_DOWN),
336 UNIPHIER_PINCTRL_PIN(104, "HS0VALIN", 104,
337 20, UNIPHIER_PIN_DRV_1BIT,
338 104, UNIPHIER_PIN_PULL_DOWN),
339 UNIPHIER_PINCTRL_PIN(105, "HS0DIN0", 105,
340 21, UNIPHIER_PIN_DRV_1BIT,
341 105, UNIPHIER_PIN_PULL_DOWN),
342 UNIPHIER_PINCTRL_PIN(106, "HS0DIN1", 106,
343 22, UNIPHIER_PIN_DRV_1BIT,
344 106, UNIPHIER_PIN_PULL_DOWN),
345 UNIPHIER_PINCTRL_PIN(107, "HS0DIN2", 107,
346 23, UNIPHIER_PIN_DRV_1BIT,
347 107, UNIPHIER_PIN_PULL_DOWN),
348 UNIPHIER_PINCTRL_PIN(108, "HS0DIN3", 108,
349 24, UNIPHIER_PIN_DRV_1BIT,
350 108, UNIPHIER_PIN_PULL_DOWN),
351 UNIPHIER_PINCTRL_PIN(109, "HS0DIN4", 109,
352 25, UNIPHIER_PIN_DRV_1BIT,
353 109, UNIPHIER_PIN_PULL_DOWN),
354 UNIPHIER_PINCTRL_PIN(110, "HS0DIN5", 110,
355 26, UNIPHIER_PIN_DRV_1BIT,
356 110, UNIPHIER_PIN_PULL_DOWN),
357 UNIPHIER_PINCTRL_PIN(111, "HS0DIN6", 111,
358 27, UNIPHIER_PIN_DRV_1BIT,
359 111, UNIPHIER_PIN_PULL_DOWN),
360 UNIPHIER_PINCTRL_PIN(112, "HS0DIN7", 112,
361 28, UNIPHIER_PIN_DRV_1BIT,
362 112, UNIPHIER_PIN_PULL_DOWN),
363 UNIPHIER_PINCTRL_PIN(113, "HS0BCLKOUT", 113,
364 64, UNIPHIER_PIN_DRV_3BIT,
365 113, UNIPHIER_PIN_PULL_DOWN),
366 UNIPHIER_PINCTRL_PIN(114, "HS0SYNCOUT", 114,
367 65, UNIPHIER_PIN_DRV_3BIT,
368 114, UNIPHIER_PIN_PULL_DOWN),
369 UNIPHIER_PINCTRL_PIN(115, "HS0VALOUT", 115,
370 66, UNIPHIER_PIN_DRV_3BIT,
371 115, UNIPHIER_PIN_PULL_DOWN),
372 UNIPHIER_PINCTRL_PIN(116, "HS0DOUT0", 116,
373 67, UNIPHIER_PIN_DRV_3BIT,
374 116, UNIPHIER_PIN_PULL_DOWN),
375 UNIPHIER_PINCTRL_PIN(117, "HS0DOUT1", 117,
376 68, UNIPHIER_PIN_DRV_3BIT,
377 117, UNIPHIER_PIN_PULL_DOWN),
378 UNIPHIER_PINCTRL_PIN(118, "HS0DOUT2", 118,
379 69, UNIPHIER_PIN_DRV_3BIT,
380 118, UNIPHIER_PIN_PULL_DOWN),
381 UNIPHIER_PINCTRL_PIN(119, "HS0DOUT3", 119,
382 70, UNIPHIER_PIN_DRV_3BIT,
383 119, UNIPHIER_PIN_PULL_DOWN),
384 UNIPHIER_PINCTRL_PIN(120, "HS0DOUT4", 120,
385 71, UNIPHIER_PIN_DRV_3BIT,
386 120, UNIPHIER_PIN_PULL_DOWN),
387 UNIPHIER_PINCTRL_PIN(121, "HS0DOUT5", 121,
388 72, UNIPHIER_PIN_DRV_3BIT,
389 121, UNIPHIER_PIN_PULL_DOWN),
390 UNIPHIER_PINCTRL_PIN(122, "HS0DOUT6", 122,
391 73, UNIPHIER_PIN_DRV_3BIT,
392 122, UNIPHIER_PIN_PULL_DOWN),
393 UNIPHIER_PINCTRL_PIN(123, "HS0DOUT7", 123,
394 74, UNIPHIER_PIN_DRV_3BIT,
395 123, UNIPHIER_PIN_PULL_DOWN),
396 UNIPHIER_PINCTRL_PIN(124, "HS1BCLKIN", 124,
397 75, UNIPHIER_PIN_DRV_3BIT,
398 124, UNIPHIER_PIN_PULL_DOWN),
399 UNIPHIER_PINCTRL_PIN(125, "HS1SYNCIN", 125,
400 76, UNIPHIER_PIN_DRV_3BIT,
401 125, UNIPHIER_PIN_PULL_DOWN),
402 UNIPHIER_PINCTRL_PIN(126, "HS1VALIN", 126,
403 77, UNIPHIER_PIN_DRV_3BIT,
404 126, UNIPHIER_PIN_PULL_DOWN),
405 UNIPHIER_PINCTRL_PIN(127, "HS1DIN0", 127,
406 78, UNIPHIER_PIN_DRV_3BIT,
407 127, UNIPHIER_PIN_PULL_DOWN),
408 UNIPHIER_PINCTRL_PIN(128, "HS1DIN1", 128,
409 79, UNIPHIER_PIN_DRV_3BIT,
410 128, UNIPHIER_PIN_PULL_DOWN),
411 UNIPHIER_PINCTRL_PIN(129, "HS1DIN2", 129,
412 80, UNIPHIER_PIN_DRV_3BIT,
413 129, UNIPHIER_PIN_PULL_DOWN),
414 UNIPHIER_PINCTRL_PIN(130, "HS1DIN3", 130,
415 81, UNIPHIER_PIN_DRV_3BIT,
416 130, UNIPHIER_PIN_PULL_DOWN),
417 UNIPHIER_PINCTRL_PIN(131, "HS1DIN4", 131,
418 82, UNIPHIER_PIN_DRV_3BIT,
419 131, UNIPHIER_PIN_PULL_DOWN),
420 UNIPHIER_PINCTRL_PIN(132, "HS1DIN5", 132,
421 83, UNIPHIER_PIN_DRV_3BIT,
422 132, UNIPHIER_PIN_PULL_DOWN),
423 UNIPHIER_PINCTRL_PIN(133, "HS1DIN6", 133,
424 84, UNIPHIER_PIN_DRV_3BIT,
425 133, UNIPHIER_PIN_PULL_DOWN),
426 UNIPHIER_PINCTRL_PIN(134, "HS1DIN7", 134,
427 85, UNIPHIER_PIN_DRV_3BIT,
428 134, UNIPHIER_PIN_PULL_DOWN),
429 UNIPHIER_PINCTRL_PIN(135, "AO1IEC", 135,
430 86, UNIPHIER_PIN_DRV_3BIT,
431 135, UNIPHIER_PIN_PULL_DOWN),
432 UNIPHIER_PINCTRL_PIN(136, "AO1ARC", 136,
433 87, UNIPHIER_PIN_DRV_3BIT,
434 136, UNIPHIER_PIN_PULL_DOWN),
435 UNIPHIER_PINCTRL_PIN(137, "AO1DACCK", 137,
436 88, UNIPHIER_PIN_DRV_3BIT,
437 137, UNIPHIER_PIN_PULL_DOWN),
438 UNIPHIER_PINCTRL_PIN(138, "AO1BCK", 138,
439 89, UNIPHIER_PIN_DRV_3BIT,
440 138, UNIPHIER_PIN_PULL_DOWN),
441 UNIPHIER_PINCTRL_PIN(139, "AO1LRCK", 139,
442 90, UNIPHIER_PIN_DRV_3BIT,
443 139, UNIPHIER_PIN_PULL_DOWN),
444 UNIPHIER_PINCTRL_PIN(140, "AO1D0", 140,
445 91, UNIPHIER_PIN_DRV_3BIT,
446 140, UNIPHIER_PIN_PULL_DOWN),
447 UNIPHIER_PINCTRL_PIN(141, "AO1D1", 141,
448 92, UNIPHIER_PIN_DRV_3BIT,
449 141, UNIPHIER_PIN_PULL_DOWN),
450 UNIPHIER_PINCTRL_PIN(142, "AO1D2", 142,
451 93, UNIPHIER_PIN_DRV_3BIT,
452 142, UNIPHIER_PIN_PULL_DOWN),
453 UNIPHIER_PINCTRL_PIN(143, "HTPDN0", 143,
454 94, UNIPHIER_PIN_DRV_3BIT,
455 143, UNIPHIER_PIN_PULL_DOWN),
456 UNIPHIER_PINCTRL_PIN(144, "LOCKN0", 144,
457 95, UNIPHIER_PIN_DRV_3BIT,
458 144, UNIPHIER_PIN_PULL_DOWN),
459 UNIPHIER_PINCTRL_PIN(145, "HTPDN1", 145,
460 96, UNIPHIER_PIN_DRV_3BIT,
461 145, UNIPHIER_PIN_PULL_DOWN),
462 UNIPHIER_PINCTRL_PIN(146, "LOCKN1", 146,
463 97, UNIPHIER_PIN_DRV_3BIT,
464 146, UNIPHIER_PIN_PULL_DOWN),
465 UNIPHIER_PINCTRL_PIN(147, "PWMA", 147,
466 98, UNIPHIER_PIN_DRV_3BIT,
467 147, UNIPHIER_PIN_PULL_DOWN),
468 UNIPHIER_PINCTRL_PIN(148, "LR_GOUT", 148,
469 99, UNIPHIER_PIN_DRV_3BIT,
470 148, UNIPHIER_PIN_PULL_DOWN),
471 UNIPHIER_PINCTRL_PIN(149, "XIRQ0", 149,
472 100, UNIPHIER_PIN_DRV_3BIT,
473 149, UNIPHIER_PIN_PULL_DOWN),
474 UNIPHIER_PINCTRL_PIN(150, "XIRQ1", 150,
475 101, UNIPHIER_PIN_DRV_3BIT,
476 150, UNIPHIER_PIN_PULL_DOWN),
477 UNIPHIER_PINCTRL_PIN(151, "XIRQ2", 151,
478 102, UNIPHIER_PIN_DRV_3BIT,
479 151, UNIPHIER_PIN_PULL_DOWN),
480 UNIPHIER_PINCTRL_PIN(152, "XIRQ3", 152,
481 103, UNIPHIER_PIN_DRV_3BIT,
482 152, UNIPHIER_PIN_PULL_DOWN),
483 UNIPHIER_PINCTRL_PIN(153, "XIRQ4", 153,
484 104, UNIPHIER_PIN_DRV_3BIT,
485 153, UNIPHIER_PIN_PULL_DOWN),
486 UNIPHIER_PINCTRL_PIN(154, "XIRQ5", 154,
487 105, UNIPHIER_PIN_DRV_3BIT,
488 154, UNIPHIER_PIN_PULL_DOWN),
489 UNIPHIER_PINCTRL_PIN(155, "XIRQ6", 155,
490 106, UNIPHIER_PIN_DRV_3BIT,
491 155, UNIPHIER_PIN_PULL_DOWN),
492 UNIPHIER_PINCTRL_PIN(156, "XIRQ7", 156,
493 107, UNIPHIER_PIN_DRV_3BIT,
494 156, UNIPHIER_PIN_PULL_DOWN),
495 UNIPHIER_PINCTRL_PIN(157, "XIRQ8", 157,
496 108, UNIPHIER_PIN_DRV_3BIT,
497 157, UNIPHIER_PIN_PULL_DOWN),
498 UNIPHIER_PINCTRL_PIN(158, "XIRQ9", 158,
499 109, UNIPHIER_PIN_DRV_3BIT,
500 158, UNIPHIER_PIN_PULL_DOWN),
501 UNIPHIER_PINCTRL_PIN(159, "XIRQ10", 159,
502 110, UNIPHIER_PIN_DRV_3BIT,
503 159, UNIPHIER_PIN_PULL_DOWN),
504 UNIPHIER_PINCTRL_PIN(160, "XIRQ11", 160,
505 111, UNIPHIER_PIN_DRV_3BIT,
506 160, UNIPHIER_PIN_PULL_DOWN),
507 UNIPHIER_PINCTRL_PIN(161, "XIRQ13", 161,
508 112, UNIPHIER_PIN_DRV_3BIT,
509 161, UNIPHIER_PIN_PULL_DOWN),
510 UNIPHIER_PINCTRL_PIN(162, "XIRQ14", 162,
511 113, UNIPHIER_PIN_DRV_3BIT,
512 162, UNIPHIER_PIN_PULL_DOWN),
513 UNIPHIER_PINCTRL_PIN(163, "XIRQ16", 163,
514 114, UNIPHIER_PIN_DRV_3BIT,
515 163, UNIPHIER_PIN_PULL_DOWN),
516 UNIPHIER_PINCTRL_PIN(164, "XIRQ17", 164,
517 115, UNIPHIER_PIN_DRV_3BIT,
518 164, UNIPHIER_PIN_PULL_DOWN),
519 UNIPHIER_PINCTRL_PIN(165, "XIRQ18", 165,
520 116, UNIPHIER_PIN_DRV_3BIT,
521 165, UNIPHIER_PIN_PULL_DOWN),
522 UNIPHIER_PINCTRL_PIN(166, "XIRQ19", 166,
523 117, UNIPHIER_PIN_DRV_3BIT,
524 166, UNIPHIER_PIN_PULL_DOWN),
525 UNIPHIER_PINCTRL_PIN(167, "XIRQ20", 167,
526 118, UNIPHIER_PIN_DRV_3BIT,
527 167, UNIPHIER_PIN_PULL_DOWN),
528 UNIPHIER_PINCTRL_PIN(168, "PORT00", 168,
529 119, UNIPHIER_PIN_DRV_3BIT,
530 168, UNIPHIER_PIN_PULL_DOWN),
531 UNIPHIER_PINCTRL_PIN(169, "PORT01", 169,
532 120, UNIPHIER_PIN_DRV_3BIT,
533 169, UNIPHIER_PIN_PULL_DOWN),
534 UNIPHIER_PINCTRL_PIN(170, "PORT02", 170,
535 121, UNIPHIER_PIN_DRV_3BIT,
536 170, UNIPHIER_PIN_PULL_DOWN),
537 UNIPHIER_PINCTRL_PIN(171, "PORT03", 171,
538 122, UNIPHIER_PIN_DRV_3BIT,
539 171, UNIPHIER_PIN_PULL_DOWN),
540 UNIPHIER_PINCTRL_PIN(172, "PORT04", 172,
541 123, UNIPHIER_PIN_DRV_3BIT,
542 172, UNIPHIER_PIN_PULL_DOWN),
543 UNIPHIER_PINCTRL_PIN(173, "CK27FO", 173,
544 124, UNIPHIER_PIN_DRV_3BIT,
545 173, UNIPHIER_PIN_PULL_DOWN),
546 UNIPHIER_PINCTRL_PIN(174, "PHSYNCO", 174,
547 125, UNIPHIER_PIN_DRV_3BIT,
548 174, UNIPHIER_PIN_PULL_DOWN),
549 UNIPHIER_PINCTRL_PIN(175, "PVSYNCO", 175,
550 126, UNIPHIER_PIN_DRV_3BIT,
551 175, UNIPHIER_PIN_PULL_DOWN),
552};
553
554static const unsigned emmc_pins[] = {18, 19, 20, 21, 22, 23, 24, 25};
555static const int emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0};
556static const unsigned emmc_dat8_pins[] = {26, 27, 28, 29};
557static const int emmc_dat8_muxvals[] = {0, 0, 0, 0};
558static const unsigned ether_rgmii_pins[] = {30, 31, 32, 33, 34, 35, 36, 37, 38,
559 39, 40, 41, 42, 43, 44, 45};
560static const int ether_rgmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
561 0, 0, 0, 0};
562static const unsigned ether_rmii_pins[] = {30, 31, 32, 33, 34, 35, 36, 37, 39,
563 41, 42, 45};
564static const int ether_rmii_muxvals[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
565static const unsigned i2c0_pins[] = {63, 64};
566static const int i2c0_muxvals[] = {0, 0};
567static const unsigned i2c1_pins[] = {65, 66};
568static const int i2c1_muxvals[] = {0, 0};
569static const unsigned i2c3_pins[] = {67, 68};
570static const int i2c3_muxvals[] = {1, 1};
571static const unsigned i2c4_pins[] = {61, 62};
572static const int i2c4_muxvals[] = {1, 1};
573static const unsigned nand_pins[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
574 15, 16, 17};
575static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
576static const unsigned sd_pins[] = {10, 11, 12, 13, 14, 15, 16, 17};
577static const int sd_muxvals[] = {3, 3, 3, 3, 3, 3, 3, 3}; /* No SDVOLC */
578static const unsigned system_bus_pins[] = {1, 2, 6, 7, 8, 9, 10, 11, 12, 13,
579 14, 15, 16, 17};
580static const int system_bus_muxvals[] = {0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
581 2};
582static const unsigned system_bus_cs1_pins[] = {0};
583static const int system_bus_cs1_muxvals[] = {0};
584static const unsigned uart0_pins[] = {54, 55};
585static const int uart0_muxvals[] = {0, 0};
586static const unsigned uart1_pins[] = {58, 59};
587static const int uart1_muxvals[] = {1, 1};
588static const unsigned uart2_pins[] = {90, 91};
589static const int uart2_muxvals[] = {1, 1};
590static const unsigned uart3_pins[] = {94, 95};
591static const int uart3_muxvals[] = {1, 1};
592static const unsigned usb0_pins[] = {46, 47};
593static const int usb0_muxvals[] = {0, 0};
594static const unsigned usb1_pins[] = {48, 49};
595static const int usb1_muxvals[] = {0, 0};
596static const unsigned usb2_pins[] = {50, 51};
597static const int usb2_muxvals[] = {0, 0};
598static const unsigned usb3_pins[] = {52, 53};
599static const int usb3_muxvals[] = {0, 0};
600static const unsigned port_range_pins[] = {
601 168, 169, 170, 171, 172, 173, 174, 175, /* PORT0x */
602 0, 1, 2, 3, 4, 5, 6, 7, /* PORT1x */
603 8, 9, 10, 11, 12, 13, 14, 15, /* PORT2x */
604 16, 17, 18, 30, 31, 32, 33, 34, /* PORT3x */
605 35, 36, 37, 38, 39, 40, 41, 42, /* PORT4x */
606 43, 44, 45, 46, 47, 48, 49, 50, /* PORT5x */
607 51, 52, 53, 54, 55, 56, 57, 58, /* PORT6x */
608 59, 60, 69, 70, 71, 72, 73, 74, /* PORT7x */
609 75, 76, 77, 78, 79, 80, 81, 82, /* PORT8x */
610 83, 84, 85, 86, 87, 88, 89, 90, /* PORT9x */
611 91, 92, 93, 94, 95, 96, 97, 98, /* PORT10x */
612 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT11x */
613 99, 100, 101, 102, 103, 104, 105, 106, /* PORT12x */
614 107, 108, 109, 110, 111, 112, 113, 114, /* PORT13x */
615 115, 116, 117, 118, 119, 120, 121, 122, /* PORT14x */
616 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT15x */
617 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT16x */
618 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT17x */
619 61, 62, 63, 64, 65, 66, 67, 68, /* PORT18x */
620 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT19x */
621 123, 124, 125, 126, 127, 128, 129, 130, /* PORT20x */
622 131, 132, 133, 134, 135, 136, 137, 138, /* PORT21x */
623 139, 140, 141, 142, 143, 144, 145, 146, /* PORT22x */
624 147, 148, 149, 150, 151, 152, 153, 154, /* PORT23x */
625 155, 156, 157, 158, 159, 160, 161, 162, /* PORT24x */
626 163, 164, 165, 166, 167, /* PORT25x */
627};
628static const int port_range_muxvals[] = {
629 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */
630 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */
631 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */
632 15, 15, 15, 15, 15, 15, 15, 15, /* PORT3x */
633 15, 15, 15, 15, 15, 15, 15, 15, /* PORT4x */
634 15, 15, 15, 15, 15, 15, 15, 15, /* PORT5x */
635 15, 15, 15, 15, 15, 15, 15, 15, /* PORT6x */
636 15, 15, 15, 15, 15, 15, 15, 15, /* PORT7x */
637 15, 15, 15, 15, 15, 15, 15, 15, /* PORT8x */
638 15, 15, 15, 15, 15, 15, 15, 15, /* PORT9x */
639 15, 15, 15, 15, 15, 15, 15, 15, /* PORT10x */
640 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT11x */
641 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */
642 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */
643 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */
644 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT15x */
645 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT16x */
646 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT17x */
647 15, 15, 15, 15, 15, 15, 15, 15, /* PORT18x */
648 -1, -1, -1, -1, -1, -1, -1, -1, /* PORT19x */
649 15, 15, 15, 15, 15, 15, 15, 15, /* PORT20x */
650 15, 15, 15, 15, 15, 15, 15, 15, /* PORT21x */
651 15, 15, 15, 15, 15, 15, 15, 15, /* PORT22x */
652 15, 15, 15, 15, 15, 15, 15, 15, /* PORT23x */
653 15, 15, 15, 15, 15, 15, 15, 15, /* PORT24x */
654 15, 15, 15, 15, 15, /* PORT25x */
655};
656static const unsigned xirq_pins[] = {
657 149, 150, 151, 152, 153, 154, 155, 156, /* XIRQ0-7 */
658 157, 158, 159, 160, 85, 161, 162, 84, /* XIRQ8-15 */
659 163, 164, 165, 166, 167, 146, 52, 53, /* XIRQ16-23 */
660};
661static const int xirq_muxvals[] = {
662 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */
663 14, 14, 14, 14, 13, 14, 14, 13, /* XIRQ8-15 */
664 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */
665};
666static const unsigned xirq_alternatives_pins[] = {
667 94, 95, 96, 97, 98, 99, 100, 101, /* XIRQ0-7 */
668 102, 103, 104, 105, 106, 107, /* XIRQ8-11,13,14 */
669 108, 109, 110, 111, 112, 147, 141, 142, /* XIRQ16-23 */
670};
671static const int xirq_alternatives_muxvals[] = {
672 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */
673 14, 14, 14, 14, 14, 14, /* XIRQ8-11,13,14 */
674 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */
675};
676
677static const struct uniphier_pinctrl_group uniphier_ld20_groups[] = {
678 UNIPHIER_PINCTRL_GROUP(emmc),
679 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
680 UNIPHIER_PINCTRL_GROUP(ether_rgmii),
681 UNIPHIER_PINCTRL_GROUP(ether_rmii),
682 UNIPHIER_PINCTRL_GROUP(i2c0),
683 UNIPHIER_PINCTRL_GROUP(i2c1),
684 UNIPHIER_PINCTRL_GROUP(i2c3),
685 UNIPHIER_PINCTRL_GROUP(i2c4),
686 UNIPHIER_PINCTRL_GROUP(nand),
687 UNIPHIER_PINCTRL_GROUP(sd),
688 UNIPHIER_PINCTRL_GROUP(system_bus),
689 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
690 UNIPHIER_PINCTRL_GROUP(uart0),
691 UNIPHIER_PINCTRL_GROUP(uart1),
692 UNIPHIER_PINCTRL_GROUP(uart2),
693 UNIPHIER_PINCTRL_GROUP(uart3),
694 UNIPHIER_PINCTRL_GROUP(usb0),
695 UNIPHIER_PINCTRL_GROUP(usb1),
696 UNIPHIER_PINCTRL_GROUP(usb2),
697 UNIPHIER_PINCTRL_GROUP(usb3),
698 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_PORT(port_range),
699 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq),
700 UNIPHIER_PINCTRL_GROUP_GPIO_RANGE_IRQ(xirq_alternatives),
701 UNIPHIER_PINCTRL_GROUP_SINGLE(port00, port_range, 0),
702 UNIPHIER_PINCTRL_GROUP_SINGLE(port01, port_range, 1),
703 UNIPHIER_PINCTRL_GROUP_SINGLE(port02, port_range, 2),
704 UNIPHIER_PINCTRL_GROUP_SINGLE(port03, port_range, 3),
705 UNIPHIER_PINCTRL_GROUP_SINGLE(port04, port_range, 4),
706 UNIPHIER_PINCTRL_GROUP_SINGLE(port05, port_range, 5),
707 UNIPHIER_PINCTRL_GROUP_SINGLE(port06, port_range, 6),
708 UNIPHIER_PINCTRL_GROUP_SINGLE(port07, port_range, 7),
709 UNIPHIER_PINCTRL_GROUP_SINGLE(port10, port_range, 8),
710 UNIPHIER_PINCTRL_GROUP_SINGLE(port11, port_range, 9),
711 UNIPHIER_PINCTRL_GROUP_SINGLE(port12, port_range, 10),
712 UNIPHIER_PINCTRL_GROUP_SINGLE(port13, port_range, 11),
713 UNIPHIER_PINCTRL_GROUP_SINGLE(port14, port_range, 12),
714 UNIPHIER_PINCTRL_GROUP_SINGLE(port15, port_range, 13),
715 UNIPHIER_PINCTRL_GROUP_SINGLE(port16, port_range, 14),
716 UNIPHIER_PINCTRL_GROUP_SINGLE(port17, port_range, 15),
717 UNIPHIER_PINCTRL_GROUP_SINGLE(port20, port_range, 16),
718 UNIPHIER_PINCTRL_GROUP_SINGLE(port21, port_range, 17),
719 UNIPHIER_PINCTRL_GROUP_SINGLE(port22, port_range, 18),
720 UNIPHIER_PINCTRL_GROUP_SINGLE(port23, port_range, 19),
721 UNIPHIER_PINCTRL_GROUP_SINGLE(port24, port_range, 20),
722 UNIPHIER_PINCTRL_GROUP_SINGLE(port25, port_range, 21),
723 UNIPHIER_PINCTRL_GROUP_SINGLE(port26, port_range, 22),
724 UNIPHIER_PINCTRL_GROUP_SINGLE(port27, port_range, 23),
725 UNIPHIER_PINCTRL_GROUP_SINGLE(port30, port_range, 24),
726 UNIPHIER_PINCTRL_GROUP_SINGLE(port31, port_range, 25),
727 UNIPHIER_PINCTRL_GROUP_SINGLE(port32, port_range, 26),
728 UNIPHIER_PINCTRL_GROUP_SINGLE(port33, port_range, 27),
729 UNIPHIER_PINCTRL_GROUP_SINGLE(port34, port_range, 28),
730 UNIPHIER_PINCTRL_GROUP_SINGLE(port35, port_range, 29),
731 UNIPHIER_PINCTRL_GROUP_SINGLE(port36, port_range, 30),
732 UNIPHIER_PINCTRL_GROUP_SINGLE(port37, port_range, 31),
733 UNIPHIER_PINCTRL_GROUP_SINGLE(port40, port_range, 32),
734 UNIPHIER_PINCTRL_GROUP_SINGLE(port41, port_range, 33),
735 UNIPHIER_PINCTRL_GROUP_SINGLE(port42, port_range, 34),
736 UNIPHIER_PINCTRL_GROUP_SINGLE(port43, port_range, 35),
737 UNIPHIER_PINCTRL_GROUP_SINGLE(port44, port_range, 36),
738 UNIPHIER_PINCTRL_GROUP_SINGLE(port45, port_range, 37),
739 UNIPHIER_PINCTRL_GROUP_SINGLE(port46, port_range, 38),
740 UNIPHIER_PINCTRL_GROUP_SINGLE(port47, port_range, 39),
741 UNIPHIER_PINCTRL_GROUP_SINGLE(port50, port_range, 40),
742 UNIPHIER_PINCTRL_GROUP_SINGLE(port51, port_range, 41),
743 UNIPHIER_PINCTRL_GROUP_SINGLE(port52, port_range, 42),
744 UNIPHIER_PINCTRL_GROUP_SINGLE(port53, port_range, 43),
745 UNIPHIER_PINCTRL_GROUP_SINGLE(port54, port_range, 44),
746 UNIPHIER_PINCTRL_GROUP_SINGLE(port55, port_range, 45),
747 UNIPHIER_PINCTRL_GROUP_SINGLE(port56, port_range, 46),
748 UNIPHIER_PINCTRL_GROUP_SINGLE(port57, port_range, 47),
749 UNIPHIER_PINCTRL_GROUP_SINGLE(port60, port_range, 48),
750 UNIPHIER_PINCTRL_GROUP_SINGLE(port61, port_range, 49),
751 UNIPHIER_PINCTRL_GROUP_SINGLE(port62, port_range, 50),
752 UNIPHIER_PINCTRL_GROUP_SINGLE(port63, port_range, 51),
753 UNIPHIER_PINCTRL_GROUP_SINGLE(port64, port_range, 52),
754 UNIPHIER_PINCTRL_GROUP_SINGLE(port65, port_range, 53),
755 UNIPHIER_PINCTRL_GROUP_SINGLE(port66, port_range, 54),
756 UNIPHIER_PINCTRL_GROUP_SINGLE(port67, port_range, 55),
757 UNIPHIER_PINCTRL_GROUP_SINGLE(port70, port_range, 56),
758 UNIPHIER_PINCTRL_GROUP_SINGLE(port71, port_range, 57),
759 UNIPHIER_PINCTRL_GROUP_SINGLE(port72, port_range, 58),
760 UNIPHIER_PINCTRL_GROUP_SINGLE(port73, port_range, 59),
761 UNIPHIER_PINCTRL_GROUP_SINGLE(port74, port_range, 60),
762 UNIPHIER_PINCTRL_GROUP_SINGLE(port75, port_range, 61),
763 UNIPHIER_PINCTRL_GROUP_SINGLE(port76, port_range, 62),
764 UNIPHIER_PINCTRL_GROUP_SINGLE(port77, port_range, 63),
765 UNIPHIER_PINCTRL_GROUP_SINGLE(port80, port_range, 64),
766 UNIPHIER_PINCTRL_GROUP_SINGLE(port81, port_range, 65),
767 UNIPHIER_PINCTRL_GROUP_SINGLE(port82, port_range, 66),
768 UNIPHIER_PINCTRL_GROUP_SINGLE(port83, port_range, 67),
769 UNIPHIER_PINCTRL_GROUP_SINGLE(port84, port_range, 68),
770 UNIPHIER_PINCTRL_GROUP_SINGLE(port85, port_range, 69),
771 UNIPHIER_PINCTRL_GROUP_SINGLE(port86, port_range, 70),
772 UNIPHIER_PINCTRL_GROUP_SINGLE(port87, port_range, 71),
773 UNIPHIER_PINCTRL_GROUP_SINGLE(port90, port_range, 72),
774 UNIPHIER_PINCTRL_GROUP_SINGLE(port91, port_range, 73),
775 UNIPHIER_PINCTRL_GROUP_SINGLE(port92, port_range, 74),
776 UNIPHIER_PINCTRL_GROUP_SINGLE(port93, port_range, 75),
777 UNIPHIER_PINCTRL_GROUP_SINGLE(port94, port_range, 76),
778 UNIPHIER_PINCTRL_GROUP_SINGLE(port95, port_range, 77),
779 UNIPHIER_PINCTRL_GROUP_SINGLE(port96, port_range, 78),
780 UNIPHIER_PINCTRL_GROUP_SINGLE(port97, port_range, 79),
781 UNIPHIER_PINCTRL_GROUP_SINGLE(port100, port_range, 80),
782 UNIPHIER_PINCTRL_GROUP_SINGLE(port101, port_range, 81),
783 UNIPHIER_PINCTRL_GROUP_SINGLE(port102, port_range, 82),
784 UNIPHIER_PINCTRL_GROUP_SINGLE(port103, port_range, 83),
785 UNIPHIER_PINCTRL_GROUP_SINGLE(port104, port_range, 84),
786 UNIPHIER_PINCTRL_GROUP_SINGLE(port105, port_range, 85),
787 UNIPHIER_PINCTRL_GROUP_SINGLE(port106, port_range, 86),
788 UNIPHIER_PINCTRL_GROUP_SINGLE(port107, port_range, 87),
789 UNIPHIER_PINCTRL_GROUP_SINGLE(port120, port_range, 96),
790 UNIPHIER_PINCTRL_GROUP_SINGLE(port121, port_range, 97),
791 UNIPHIER_PINCTRL_GROUP_SINGLE(port122, port_range, 98),
792 UNIPHIER_PINCTRL_GROUP_SINGLE(port123, port_range, 99),
793 UNIPHIER_PINCTRL_GROUP_SINGLE(port124, port_range, 100),
794 UNIPHIER_PINCTRL_GROUP_SINGLE(port125, port_range, 101),
795 UNIPHIER_PINCTRL_GROUP_SINGLE(port126, port_range, 102),
796 UNIPHIER_PINCTRL_GROUP_SINGLE(port127, port_range, 103),
797 UNIPHIER_PINCTRL_GROUP_SINGLE(port130, port_range, 104),
798 UNIPHIER_PINCTRL_GROUP_SINGLE(port131, port_range, 105),
799 UNIPHIER_PINCTRL_GROUP_SINGLE(port132, port_range, 106),
800 UNIPHIER_PINCTRL_GROUP_SINGLE(port133, port_range, 107),
801 UNIPHIER_PINCTRL_GROUP_SINGLE(port134, port_range, 108),
802 UNIPHIER_PINCTRL_GROUP_SINGLE(port135, port_range, 109),
803 UNIPHIER_PINCTRL_GROUP_SINGLE(port136, port_range, 110),
804 UNIPHIER_PINCTRL_GROUP_SINGLE(port137, port_range, 111),
805 UNIPHIER_PINCTRL_GROUP_SINGLE(port140, port_range, 112),
806 UNIPHIER_PINCTRL_GROUP_SINGLE(port141, port_range, 113),
807 UNIPHIER_PINCTRL_GROUP_SINGLE(port142, port_range, 114),
808 UNIPHIER_PINCTRL_GROUP_SINGLE(port143, port_range, 115),
809 UNIPHIER_PINCTRL_GROUP_SINGLE(port144, port_range, 116),
810 UNIPHIER_PINCTRL_GROUP_SINGLE(port145, port_range, 117),
811 UNIPHIER_PINCTRL_GROUP_SINGLE(port146, port_range, 118),
812 UNIPHIER_PINCTRL_GROUP_SINGLE(port147, port_range, 119),
813 UNIPHIER_PINCTRL_GROUP_SINGLE(port180, port_range, 144),
814 UNIPHIER_PINCTRL_GROUP_SINGLE(port181, port_range, 145),
815 UNIPHIER_PINCTRL_GROUP_SINGLE(port182, port_range, 146),
816 UNIPHIER_PINCTRL_GROUP_SINGLE(port183, port_range, 147),
817 UNIPHIER_PINCTRL_GROUP_SINGLE(port184, port_range, 148),
818 UNIPHIER_PINCTRL_GROUP_SINGLE(port185, port_range, 149),
819 UNIPHIER_PINCTRL_GROUP_SINGLE(port186, port_range, 150),
820 UNIPHIER_PINCTRL_GROUP_SINGLE(port187, port_range, 151),
821 UNIPHIER_PINCTRL_GROUP_SINGLE(port200, port_range, 160),
822 UNIPHIER_PINCTRL_GROUP_SINGLE(port201, port_range, 161),
823 UNIPHIER_PINCTRL_GROUP_SINGLE(port202, port_range, 162),
824 UNIPHIER_PINCTRL_GROUP_SINGLE(port203, port_range, 163),
825 UNIPHIER_PINCTRL_GROUP_SINGLE(port204, port_range, 164),
826 UNIPHIER_PINCTRL_GROUP_SINGLE(port205, port_range, 165),
827 UNIPHIER_PINCTRL_GROUP_SINGLE(port206, port_range, 166),
828 UNIPHIER_PINCTRL_GROUP_SINGLE(port207, port_range, 167),
829 UNIPHIER_PINCTRL_GROUP_SINGLE(port210, port_range, 168),
830 UNIPHIER_PINCTRL_GROUP_SINGLE(port211, port_range, 169),
831 UNIPHIER_PINCTRL_GROUP_SINGLE(port212, port_range, 170),
832 UNIPHIER_PINCTRL_GROUP_SINGLE(port213, port_range, 171),
833 UNIPHIER_PINCTRL_GROUP_SINGLE(port214, port_range, 172),
834 UNIPHIER_PINCTRL_GROUP_SINGLE(port215, port_range, 173),
835 UNIPHIER_PINCTRL_GROUP_SINGLE(port216, port_range, 174),
836 UNIPHIER_PINCTRL_GROUP_SINGLE(port217, port_range, 175),
837 UNIPHIER_PINCTRL_GROUP_SINGLE(port220, port_range, 176),
838 UNIPHIER_PINCTRL_GROUP_SINGLE(port221, port_range, 177),
839 UNIPHIER_PINCTRL_GROUP_SINGLE(port222, port_range, 178),
840 UNIPHIER_PINCTRL_GROUP_SINGLE(port223, port_range, 179),
841 UNIPHIER_PINCTRL_GROUP_SINGLE(port224, port_range, 180),
842 UNIPHIER_PINCTRL_GROUP_SINGLE(port225, port_range, 181),
843 UNIPHIER_PINCTRL_GROUP_SINGLE(port226, port_range, 182),
844 UNIPHIER_PINCTRL_GROUP_SINGLE(port227, port_range, 183),
845 UNIPHIER_PINCTRL_GROUP_SINGLE(port230, port_range, 184),
846 UNIPHIER_PINCTRL_GROUP_SINGLE(port231, port_range, 185),
847 UNIPHIER_PINCTRL_GROUP_SINGLE(port232, port_range, 186),
848 UNIPHIER_PINCTRL_GROUP_SINGLE(port233, port_range, 187),
849 UNIPHIER_PINCTRL_GROUP_SINGLE(port234, port_range, 188),
850 UNIPHIER_PINCTRL_GROUP_SINGLE(port235, port_range, 189),
851 UNIPHIER_PINCTRL_GROUP_SINGLE(port236, port_range, 190),
852 UNIPHIER_PINCTRL_GROUP_SINGLE(port237, port_range, 191),
853 UNIPHIER_PINCTRL_GROUP_SINGLE(port240, port_range, 192),
854 UNIPHIER_PINCTRL_GROUP_SINGLE(port241, port_range, 193),
855 UNIPHIER_PINCTRL_GROUP_SINGLE(port242, port_range, 194),
856 UNIPHIER_PINCTRL_GROUP_SINGLE(port243, port_range, 195),
857 UNIPHIER_PINCTRL_GROUP_SINGLE(port244, port_range, 196),
858 UNIPHIER_PINCTRL_GROUP_SINGLE(port245, port_range, 197),
859 UNIPHIER_PINCTRL_GROUP_SINGLE(port246, port_range, 198),
860 UNIPHIER_PINCTRL_GROUP_SINGLE(port247, port_range, 199),
861 UNIPHIER_PINCTRL_GROUP_SINGLE(port250, port_range, 200),
862 UNIPHIER_PINCTRL_GROUP_SINGLE(port251, port_range, 201),
863 UNIPHIER_PINCTRL_GROUP_SINGLE(port252, port_range, 202),
864 UNIPHIER_PINCTRL_GROUP_SINGLE(port253, port_range, 203),
865 UNIPHIER_PINCTRL_GROUP_SINGLE(port254, port_range, 204),
866 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0, xirq, 0),
867 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1, xirq, 1),
868 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2, xirq, 2),
869 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3, xirq, 3),
870 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4, xirq, 4),
871 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5, xirq, 5),
872 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6, xirq, 6),
873 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7, xirq, 7),
874 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8, xirq, 8),
875 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9, xirq, 9),
876 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10, xirq, 10),
877 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11, xirq, 11),
878 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq12, xirq, 12),
879 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq13, xirq, 13),
880 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14, xirq, 14),
881 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq15, xirq, 15),
882 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq16, xirq, 16),
883 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq17, xirq, 17),
884 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq18, xirq, 18),
885 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq19, xirq, 19),
886 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq20, xirq, 20),
887 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq21, xirq, 21),
888 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq22, xirq, 22),
889 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq23, xirq, 23),
890 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq0b, xirq_alternatives, 0),
891 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq1b, xirq_alternatives, 1),
892 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq2b, xirq_alternatives, 2),
893 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq3b, xirq_alternatives, 3),
894 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq4b, xirq_alternatives, 4),
895 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq5b, xirq_alternatives, 5),
896 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq6b, xirq_alternatives, 6),
897 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq7b, xirq_alternatives, 7),
898 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq8b, xirq_alternatives, 8),
899 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq9b, xirq_alternatives, 9),
900 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq10b, xirq_alternatives, 10),
901 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq11b, xirq_alternatives, 11),
902 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq13b, xirq_alternatives, 12),
903 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq14b, xirq_alternatives, 13),
904 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq16b, xirq_alternatives, 14),
905 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq17b, xirq_alternatives, 15),
906 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq18b, xirq_alternatives, 16),
907 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq19b, xirq_alternatives, 17),
908 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq20b, xirq_alternatives, 18),
909 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq21b, xirq_alternatives, 19),
910 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq22b, xirq_alternatives, 20),
911 UNIPHIER_PINCTRL_GROUP_SINGLE(xirq23b, xirq_alternatives, 21),
912};
913
914static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
915static const char * const ether_rgmii_groups[] = {"ether_rgmii"};
916static const char * const ether_rmii_groups[] = {"ether_rmii"};
917static const char * const i2c0_groups[] = {"i2c0"};
918static const char * const i2c1_groups[] = {"i2c1"};
919static const char * const i2c3_groups[] = {"i2c3"};
920static const char * const i2c4_groups[] = {"i2c4"};
921static const char * const nand_groups[] = {"nand"};
922static const char * const sd_groups[] = {"sd"};
923static const char * const system_bus_groups[] = {"system_bus",
924 "system_bus_cs1"};
925static const char * const uart0_groups[] = {"uart0"};
926static const char * const uart1_groups[] = {"uart1"};
927static const char * const uart2_groups[] = {"uart2"};
928static const char * const uart3_groups[] = {"uart3"};
929static const char * const usb0_groups[] = {"usb0"};
930static const char * const usb1_groups[] = {"usb1"};
931static const char * const usb2_groups[] = {"usb2"};
932static const char * const usb3_groups[] = {"usb3"};
933static const char * const port_groups[] = {
934 "port00", "port01", "port02", "port03",
935 "port04", "port05", "port06", "port07",
936 "port10", "port11", "port12", "port13",
937 "port14", "port15", "port16", "port17",
938 "port20", "port21", "port22", "port23",
939 "port24", "port25", "port26", "port27",
940 "port30", "port31", "port32", "port33",
941 "port34", "port35", "port36", "port37",
942 "port40", "port41", "port42", "port43",
943 "port44", "port45", "port46", "port47",
944 "port50", "port51", "port52", "port53",
945 "port54", "port55", "port56", "port57",
946 "port60", "port61", "port62", "port63",
947 "port64", "port65", "port66", "port67",
948 "port70", "port71", "port72", "port73",
949 "port74", "port75", "port76", "port77",
950 "port80", "port81", "port82", "port83",
951 "port84", "port85", "port86", "port87",
952 "port90", "port91", "port92", "port93",
953 "port94", "port95", "port96", "port97",
954 "port100", "port101", "port102", "port103",
955 "port104", "port105", "port106", "port107",
956 /* port110-117 missing */
957 "port120", "port121", "port122", "port123",
958 "port124", "port125", "port126", "port127",
959 "port130", "port131", "port132", "port133",
960 "port134", "port135", "port136", "port137",
961 "port140", "port141", "port142", "port143",
962 "port144", "port145", "port146", "port147",
963 /* port150-177 missing */
964 "port180", "port181", "port182", "port183",
965 "port184", "port185", "port186", "port187",
966 /* port190-197 missing */
967 "port200", "port201", "port202", "port203",
968 "port204", "port205", "port206", "port207",
969 "port210", "port211", "port212", "port213",
970 "port214", "port215", "port216", "port217",
971 "port220", "port221", "port222", "port223",
972 "port224", "port225", "port226", "port227",
973 "port230", "port231", "port232", "port233",
974 "port234", "port235", "port236", "port237",
975 "port240", "port241", "port242", "port243",
976 "port244", "port245", "port246", "port247",
977 "port250", "port251", "port252", "port253",
978 "port254",
979};
980static const char * const xirq_groups[] = {
981 "xirq0", "xirq1", "xirq2", "xirq3",
982 "xirq4", "xirq5", "xirq6", "xirq7",
983 "xirq8", "xirq9", "xirq10", "xirq11",
984 "xirq12", "xirq13", "xirq14", "xirq15",
985 "xirq16", "xirq17", "xirq18", "xirq19",
986 "xirq20", "xirq21", "xirq22", "xirq23",
987 "xirq0b", "xirq1b", "xirq2b", "xirq3b",
988 "xirq4b", "xirq5b", "xirq6b", "xirq7b",
989 "xirq8b", "xirq9b", "xirq10b", "xirq11b",
990 /* none */ "xirq13b", "xirq14b", /* none */
991 "xirq16b", "xirq17b", "xirq18b", "xirq19b",
992 "xirq20b", "xirq21b", "xirq22b", "xirq23b",
993};
994
995static const struct uniphier_pinmux_function uniphier_ld20_functions[] = {
996 UNIPHIER_PINMUX_FUNCTION(emmc),
997 UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
998 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
999 UNIPHIER_PINMUX_FUNCTION(i2c0),
1000 UNIPHIER_PINMUX_FUNCTION(i2c1),
1001 UNIPHIER_PINMUX_FUNCTION(i2c3),
1002 UNIPHIER_PINMUX_FUNCTION(i2c4),
1003 UNIPHIER_PINMUX_FUNCTION(nand),
1004 UNIPHIER_PINMUX_FUNCTION(sd),
1005 UNIPHIER_PINMUX_FUNCTION(system_bus),
1006 UNIPHIER_PINMUX_FUNCTION(uart0),
1007 UNIPHIER_PINMUX_FUNCTION(uart1),
1008 UNIPHIER_PINMUX_FUNCTION(uart2),
1009 UNIPHIER_PINMUX_FUNCTION(uart3),
1010 UNIPHIER_PINMUX_FUNCTION(usb0),
1011 UNIPHIER_PINMUX_FUNCTION(usb1),
1012 UNIPHIER_PINMUX_FUNCTION(usb2),
1013 UNIPHIER_PINMUX_FUNCTION(usb3),
1014 UNIPHIER_PINMUX_FUNCTION(port),
1015 UNIPHIER_PINMUX_FUNCTION(xirq),
1016};
1017
1018static struct uniphier_pinctrl_socdata uniphier_ld20_pindata = {
1019 .pins = uniphier_ld20_pins,
1020 .npins = ARRAY_SIZE(uniphier_ld20_pins),
1021 .groups = uniphier_ld20_groups,
1022 .groups_count = ARRAY_SIZE(uniphier_ld20_groups),
1023 .functions = uniphier_ld20_functions,
1024 .functions_count = ARRAY_SIZE(uniphier_ld20_functions),
1025 .caps = UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL,
1026};
1027
1028static int uniphier_ld20_pinctrl_probe(struct platform_device *pdev)
1029{
1030 return uniphier_pinctrl_probe(pdev, &uniphier_ld20_pindata);
1031}
1032
1033static const struct of_device_id uniphier_ld20_pinctrl_match[] = {
1034 { .compatible = "socionext,uniphier-ld20-pinctrl" },
1035 { /* sentinel */ }
1036};
1037MODULE_DEVICE_TABLE(of, uniphier_ld20_pinctrl_match);
1038
1039static struct platform_driver uniphier_ld20_pinctrl_driver = {
1040 .probe = uniphier_ld20_pinctrl_probe,
1041 .driver = {
1042 .name = "uniphier-ld20-pinctrl",
1043 .of_match_table = uniphier_ld20_pinctrl_match,
1044 },
1045};
1046module_platform_driver(uniphier_ld20_pinctrl_driver);
1047
1048MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
1049MODULE_DESCRIPTION("UniPhier PH1-LD20 pinctrl driver");
1050MODULE_LICENSE("GPL");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c
index 4a0439c80aa0..3edfb6f9d6df 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c
@@ -19,544 +19,592 @@
19 19
20#include "pinctrl-uniphier.h" 20#include "pinctrl-uniphier.h"
21 21
22#define DRIVER_NAME "ph1-ld4-pinctrl" 22static const struct pinctrl_pin_desc uniphier_ld4_pins[] = {
23
24static const struct pinctrl_pin_desc ph1_ld4_pins[] = {
25 UNIPHIER_PINCTRL_PIN(0, "EA1", UNIPHIER_PIN_IECTRL_NONE, 23 UNIPHIER_PINCTRL_PIN(0, "EA1", UNIPHIER_PIN_IECTRL_NONE,
26 8, UNIPHIER_PIN_DRV_4_8, 24 8, UNIPHIER_PIN_DRV_1BIT,
27 8, UNIPHIER_PIN_PULL_DOWN), 25 8, UNIPHIER_PIN_PULL_DOWN),
28 UNIPHIER_PINCTRL_PIN(1, "EA2", UNIPHIER_PIN_IECTRL_NONE, 26 UNIPHIER_PINCTRL_PIN(1, "EA2", UNIPHIER_PIN_IECTRL_NONE,
29 9, UNIPHIER_PIN_DRV_4_8, 27 9, UNIPHIER_PIN_DRV_1BIT,
30 9, UNIPHIER_PIN_PULL_DOWN), 28 9, UNIPHIER_PIN_PULL_DOWN),
31 UNIPHIER_PINCTRL_PIN(2, "EA3", UNIPHIER_PIN_IECTRL_NONE, 29 UNIPHIER_PINCTRL_PIN(2, "EA3", UNIPHIER_PIN_IECTRL_NONE,
32 10, UNIPHIER_PIN_DRV_4_8, 30 10, UNIPHIER_PIN_DRV_1BIT,
33 10, UNIPHIER_PIN_PULL_DOWN), 31 10, UNIPHIER_PIN_PULL_DOWN),
34 UNIPHIER_PINCTRL_PIN(3, "EA4", UNIPHIER_PIN_IECTRL_NONE, 32 UNIPHIER_PINCTRL_PIN(3, "EA4", UNIPHIER_PIN_IECTRL_NONE,
35 11, UNIPHIER_PIN_DRV_4_8, 33 11, UNIPHIER_PIN_DRV_1BIT,
36 11, UNIPHIER_PIN_PULL_DOWN), 34 11, UNIPHIER_PIN_PULL_DOWN),
37 UNIPHIER_PINCTRL_PIN(4, "EA5", UNIPHIER_PIN_IECTRL_NONE, 35 UNIPHIER_PINCTRL_PIN(4, "EA5", UNIPHIER_PIN_IECTRL_NONE,
38 12, UNIPHIER_PIN_DRV_4_8, 36 12, UNIPHIER_PIN_DRV_1BIT,
39 12, UNIPHIER_PIN_PULL_DOWN), 37 12, UNIPHIER_PIN_PULL_DOWN),
40 UNIPHIER_PINCTRL_PIN(5, "EA6", UNIPHIER_PIN_IECTRL_NONE, 38 UNIPHIER_PINCTRL_PIN(5, "EA6", UNIPHIER_PIN_IECTRL_NONE,
41 13, UNIPHIER_PIN_DRV_4_8, 39 13, UNIPHIER_PIN_DRV_1BIT,
42 13, UNIPHIER_PIN_PULL_DOWN), 40 13, UNIPHIER_PIN_PULL_DOWN),
43 UNIPHIER_PINCTRL_PIN(6, "EA7", UNIPHIER_PIN_IECTRL_NONE, 41 UNIPHIER_PINCTRL_PIN(6, "EA7", UNIPHIER_PIN_IECTRL_NONE,
44 14, UNIPHIER_PIN_DRV_4_8, 42 14, UNIPHIER_PIN_DRV_1BIT,
45 14, UNIPHIER_PIN_PULL_DOWN), 43 14, UNIPHIER_PIN_PULL_DOWN),
46 UNIPHIER_PINCTRL_PIN(7, "EA8", 0, 44 UNIPHIER_PINCTRL_PIN(7, "EA8", 0,
47 15, UNIPHIER_PIN_DRV_4_8, 45 15, UNIPHIER_PIN_DRV_1BIT,
48 15, UNIPHIER_PIN_PULL_DOWN), 46 15, UNIPHIER_PIN_PULL_DOWN),
49 UNIPHIER_PINCTRL_PIN(8, "EA9", 0, 47 UNIPHIER_PINCTRL_PIN(8, "EA9", 0,
50 16, UNIPHIER_PIN_DRV_4_8, 48 16, UNIPHIER_PIN_DRV_1BIT,
51 16, UNIPHIER_PIN_PULL_DOWN), 49 16, UNIPHIER_PIN_PULL_DOWN),
52 UNIPHIER_PINCTRL_PIN(9, "EA10", 0, 50 UNIPHIER_PINCTRL_PIN(9, "EA10", 0,
53 17, UNIPHIER_PIN_DRV_4_8, 51 17, UNIPHIER_PIN_DRV_1BIT,
54 17, UNIPHIER_PIN_PULL_DOWN), 52 17, UNIPHIER_PIN_PULL_DOWN),
55 UNIPHIER_PINCTRL_PIN(10, "EA11", 0, 53 UNIPHIER_PINCTRL_PIN(10, "EA11", 0,
56 18, UNIPHIER_PIN_DRV_4_8, 54 18, UNIPHIER_PIN_DRV_1BIT,
57 18, UNIPHIER_PIN_PULL_DOWN), 55 18, UNIPHIER_PIN_PULL_DOWN),
58 UNIPHIER_PINCTRL_PIN(11, "EA12", 0, 56 UNIPHIER_PINCTRL_PIN(11, "EA12", 0,
59 19, UNIPHIER_PIN_DRV_4_8, 57 19, UNIPHIER_PIN_DRV_1BIT,
60 19, UNIPHIER_PIN_PULL_DOWN), 58 19, UNIPHIER_PIN_PULL_DOWN),
61 UNIPHIER_PINCTRL_PIN(12, "EA13", 0, 59 UNIPHIER_PINCTRL_PIN(12, "EA13", 0,
62 20, UNIPHIER_PIN_DRV_4_8, 60 20, UNIPHIER_PIN_DRV_1BIT,
63 20, UNIPHIER_PIN_PULL_DOWN), 61 20, UNIPHIER_PIN_PULL_DOWN),
64 UNIPHIER_PINCTRL_PIN(13, "EA14", 0, 62 UNIPHIER_PINCTRL_PIN(13, "EA14", 0,
65 21, UNIPHIER_PIN_DRV_4_8, 63 21, UNIPHIER_PIN_DRV_1BIT,
66 21, UNIPHIER_PIN_PULL_DOWN), 64 21, UNIPHIER_PIN_PULL_DOWN),
67 UNIPHIER_PINCTRL_PIN(14, "EA15", 0, 65 UNIPHIER_PINCTRL_PIN(14, "EA15", 0,
68 22, UNIPHIER_PIN_DRV_4_8, 66 22, UNIPHIER_PIN_DRV_1BIT,
69 22, UNIPHIER_PIN_PULL_DOWN), 67 22, UNIPHIER_PIN_PULL_DOWN),
70 UNIPHIER_PINCTRL_PIN(15, "ECLK", UNIPHIER_PIN_IECTRL_NONE, 68 UNIPHIER_PINCTRL_PIN(15, "ECLK", UNIPHIER_PIN_IECTRL_NONE,
71 23, UNIPHIER_PIN_DRV_4_8, 69 23, UNIPHIER_PIN_DRV_1BIT,
72 23, UNIPHIER_PIN_PULL_DOWN), 70 23, UNIPHIER_PIN_PULL_DOWN),
73 UNIPHIER_PINCTRL_PIN(16, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 71 UNIPHIER_PINCTRL_PIN(16, "XERWE0", UNIPHIER_PIN_IECTRL_NONE,
74 24, UNIPHIER_PIN_DRV_4_8, 72 24, UNIPHIER_PIN_DRV_1BIT,
75 24, UNIPHIER_PIN_PULL_UP), 73 24, UNIPHIER_PIN_PULL_UP),
76 UNIPHIER_PINCTRL_PIN(17, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 74 UNIPHIER_PINCTRL_PIN(17, "XERWE1", UNIPHIER_PIN_IECTRL_NONE,
77 25, UNIPHIER_PIN_DRV_4_8, 75 25, UNIPHIER_PIN_DRV_1BIT,
78 25, UNIPHIER_PIN_PULL_UP), 76 25, UNIPHIER_PIN_PULL_UP),
79 UNIPHIER_PINCTRL_PIN(18, "ES0", UNIPHIER_PIN_IECTRL_NONE, 77 UNIPHIER_PINCTRL_PIN(18, "ES0", UNIPHIER_PIN_IECTRL_NONE,
80 27, UNIPHIER_PIN_DRV_4_8, 78 27, UNIPHIER_PIN_DRV_1BIT,
81 27, UNIPHIER_PIN_PULL_UP), 79 27, UNIPHIER_PIN_PULL_UP),
82 UNIPHIER_PINCTRL_PIN(19, "ES1", UNIPHIER_PIN_IECTRL_NONE, 80 UNIPHIER_PINCTRL_PIN(19, "ES1", UNIPHIER_PIN_IECTRL_NONE,
83 28, UNIPHIER_PIN_DRV_4_8, 81 28, UNIPHIER_PIN_DRV_1BIT,
84 28, UNIPHIER_PIN_PULL_UP), 82 28, UNIPHIER_PIN_PULL_UP),
85 UNIPHIER_PINCTRL_PIN(20, "ES2", UNIPHIER_PIN_IECTRL_NONE, 83 UNIPHIER_PINCTRL_PIN(20, "ES2", UNIPHIER_PIN_IECTRL_NONE,
86 29, UNIPHIER_PIN_DRV_4_8, 84 29, UNIPHIER_PIN_DRV_1BIT,
87 29, UNIPHIER_PIN_PULL_UP), 85 29, UNIPHIER_PIN_PULL_UP),
88 UNIPHIER_PINCTRL_PIN(21, "XERST", UNIPHIER_PIN_IECTRL_NONE, 86 UNIPHIER_PINCTRL_PIN(21, "XERST", UNIPHIER_PIN_IECTRL_NONE,
89 38, UNIPHIER_PIN_DRV_4_8, 87 38, UNIPHIER_PIN_DRV_1BIT,
90 38, UNIPHIER_PIN_PULL_UP), 88 38, UNIPHIER_PIN_PULL_UP),
91 UNIPHIER_PINCTRL_PIN(22, "MMCCLK", UNIPHIER_PIN_IECTRL_NONE, 89 UNIPHIER_PINCTRL_PIN(22, "MMCCLK", UNIPHIER_PIN_IECTRL_NONE,
92 0, UNIPHIER_PIN_DRV_8_12_16_20, 90 0, UNIPHIER_PIN_DRV_2BIT,
93 146, UNIPHIER_PIN_PULL_UP), 91 146, UNIPHIER_PIN_PULL_UP),
94 UNIPHIER_PINCTRL_PIN(23, "MMCCMD", UNIPHIER_PIN_IECTRL_NONE, 92 UNIPHIER_PINCTRL_PIN(23, "MMCCMD", UNIPHIER_PIN_IECTRL_NONE,
95 4, UNIPHIER_PIN_DRV_8_12_16_20, 93 1, UNIPHIER_PIN_DRV_2BIT,
96 147, UNIPHIER_PIN_PULL_UP), 94 147, UNIPHIER_PIN_PULL_UP),
97 UNIPHIER_PINCTRL_PIN(24, "MMCDAT0", UNIPHIER_PIN_IECTRL_NONE, 95 UNIPHIER_PINCTRL_PIN(24, "MMCDAT0", UNIPHIER_PIN_IECTRL_NONE,
98 8, UNIPHIER_PIN_DRV_8_12_16_20, 96 2, UNIPHIER_PIN_DRV_2BIT,
99 148, UNIPHIER_PIN_PULL_UP), 97 148, UNIPHIER_PIN_PULL_UP),
100 UNIPHIER_PINCTRL_PIN(25, "MMCDAT1", UNIPHIER_PIN_IECTRL_NONE, 98 UNIPHIER_PINCTRL_PIN(25, "MMCDAT1", UNIPHIER_PIN_IECTRL_NONE,
101 12, UNIPHIER_PIN_DRV_8_12_16_20, 99 3, UNIPHIER_PIN_DRV_2BIT,
102 149, UNIPHIER_PIN_PULL_UP), 100 149, UNIPHIER_PIN_PULL_UP),
103 UNIPHIER_PINCTRL_PIN(26, "MMCDAT2", UNIPHIER_PIN_IECTRL_NONE, 101 UNIPHIER_PINCTRL_PIN(26, "MMCDAT2", UNIPHIER_PIN_IECTRL_NONE,
104 16, UNIPHIER_PIN_DRV_8_12_16_20, 102 4, UNIPHIER_PIN_DRV_2BIT,
105 150, UNIPHIER_PIN_PULL_UP), 103 150, UNIPHIER_PIN_PULL_UP),
106 UNIPHIER_PINCTRL_PIN(27, "MMCDAT3", UNIPHIER_PIN_IECTRL_NONE, 104 UNIPHIER_PINCTRL_PIN(27, "MMCDAT3", UNIPHIER_PIN_IECTRL_NONE,
107 20, UNIPHIER_PIN_DRV_8_12_16_20, 105 5, UNIPHIER_PIN_DRV_2BIT,
108 151, UNIPHIER_PIN_PULL_UP), 106 151, UNIPHIER_PIN_PULL_UP),
109 UNIPHIER_PINCTRL_PIN(28, "MMCDAT4", UNIPHIER_PIN_IECTRL_NONE, 107 UNIPHIER_PINCTRL_PIN(28, "MMCDAT4", UNIPHIER_PIN_IECTRL_NONE,
110 24, UNIPHIER_PIN_DRV_8_12_16_20, 108 6, UNIPHIER_PIN_DRV_2BIT,
111 152, UNIPHIER_PIN_PULL_UP), 109 152, UNIPHIER_PIN_PULL_UP),
112 UNIPHIER_PINCTRL_PIN(29, "MMCDAT5", UNIPHIER_PIN_IECTRL_NONE, 110 UNIPHIER_PINCTRL_PIN(29, "MMCDAT5", UNIPHIER_PIN_IECTRL_NONE,
113 28, UNIPHIER_PIN_DRV_8_12_16_20, 111 7, UNIPHIER_PIN_DRV_2BIT,
114 153, UNIPHIER_PIN_PULL_UP), 112 153, UNIPHIER_PIN_PULL_UP),
115 UNIPHIER_PINCTRL_PIN(30, "MMCDAT6", UNIPHIER_PIN_IECTRL_NONE, 113 UNIPHIER_PINCTRL_PIN(30, "MMCDAT6", UNIPHIER_PIN_IECTRL_NONE,
116 32, UNIPHIER_PIN_DRV_8_12_16_20, 114 8, UNIPHIER_PIN_DRV_2BIT,
117 154, UNIPHIER_PIN_PULL_UP), 115 154, UNIPHIER_PIN_PULL_UP),
118 UNIPHIER_PINCTRL_PIN(31, "MMCDAT7", UNIPHIER_PIN_IECTRL_NONE, 116 UNIPHIER_PINCTRL_PIN(31, "MMCDAT7", UNIPHIER_PIN_IECTRL_NONE,
119 36, UNIPHIER_PIN_DRV_8_12_16_20, 117 9, UNIPHIER_PIN_DRV_2BIT,
120 155, UNIPHIER_PIN_PULL_UP), 118 155, UNIPHIER_PIN_PULL_UP),
121 UNIPHIER_PINCTRL_PIN(32, "RMII_RXD0", 6, 119 UNIPHIER_PINCTRL_PIN(32, "RMII_RXD0", 6,
122 39, UNIPHIER_PIN_DRV_4_8, 120 39, UNIPHIER_PIN_DRV_1BIT,
123 39, UNIPHIER_PIN_PULL_DOWN), 121 39, UNIPHIER_PIN_PULL_DOWN),
124 UNIPHIER_PINCTRL_PIN(33, "RMII_RXD1", 6, 122 UNIPHIER_PINCTRL_PIN(33, "RMII_RXD1", 6,
125 40, UNIPHIER_PIN_DRV_4_8, 123 40, UNIPHIER_PIN_DRV_1BIT,
126 40, UNIPHIER_PIN_PULL_DOWN), 124 40, UNIPHIER_PIN_PULL_DOWN),
127 UNIPHIER_PINCTRL_PIN(34, "RMII_CRS_DV", 6, 125 UNIPHIER_PINCTRL_PIN(34, "RMII_CRS_DV", 6,
128 41, UNIPHIER_PIN_DRV_4_8, 126 41, UNIPHIER_PIN_DRV_1BIT,
129 41, UNIPHIER_PIN_PULL_DOWN), 127 41, UNIPHIER_PIN_PULL_DOWN),
130 UNIPHIER_PINCTRL_PIN(35, "RMII_RXER", 6, 128 UNIPHIER_PINCTRL_PIN(35, "RMII_RXER", 6,
131 42, UNIPHIER_PIN_DRV_4_8, 129 42, UNIPHIER_PIN_DRV_1BIT,
132 42, UNIPHIER_PIN_PULL_DOWN), 130 42, UNIPHIER_PIN_PULL_DOWN),
133 UNIPHIER_PINCTRL_PIN(36, "RMII_REFCLK", 6, 131 UNIPHIER_PINCTRL_PIN(36, "RMII_REFCLK", 6,
134 43, UNIPHIER_PIN_DRV_4_8, 132 43, UNIPHIER_PIN_DRV_1BIT,
135 43, UNIPHIER_PIN_PULL_DOWN), 133 43, UNIPHIER_PIN_PULL_DOWN),
136 UNIPHIER_PINCTRL_PIN(37, "RMII_TXD0", 6, 134 UNIPHIER_PINCTRL_PIN(37, "RMII_TXD0", 6,
137 44, UNIPHIER_PIN_DRV_4_8, 135 44, UNIPHIER_PIN_DRV_1BIT,
138 44, UNIPHIER_PIN_PULL_DOWN), 136 44, UNIPHIER_PIN_PULL_DOWN),
139 UNIPHIER_PINCTRL_PIN(38, "RMII_TXD1", 6, 137 UNIPHIER_PINCTRL_PIN(38, "RMII_TXD1", 6,
140 45, UNIPHIER_PIN_DRV_4_8, 138 45, UNIPHIER_PIN_DRV_1BIT,
141 45, UNIPHIER_PIN_PULL_DOWN), 139 45, UNIPHIER_PIN_PULL_DOWN),
142 UNIPHIER_PINCTRL_PIN(39, "RMII_TXEN", 6, 140 UNIPHIER_PINCTRL_PIN(39, "RMII_TXEN", 6,
143 46, UNIPHIER_PIN_DRV_4_8, 141 46, UNIPHIER_PIN_DRV_1BIT,
144 46, UNIPHIER_PIN_PULL_DOWN), 142 46, UNIPHIER_PIN_PULL_DOWN),
145 UNIPHIER_PINCTRL_PIN(40, "MDC", 6, 143 UNIPHIER_PINCTRL_PIN(40, "MDC", 6,
146 47, UNIPHIER_PIN_DRV_4_8, 144 47, UNIPHIER_PIN_DRV_1BIT,
147 47, UNIPHIER_PIN_PULL_DOWN), 145 47, UNIPHIER_PIN_PULL_DOWN),
148 UNIPHIER_PINCTRL_PIN(41, "MDIO", 6, 146 UNIPHIER_PINCTRL_PIN(41, "MDIO", 6,
149 48, UNIPHIER_PIN_DRV_4_8, 147 48, UNIPHIER_PIN_DRV_1BIT,
150 48, UNIPHIER_PIN_PULL_DOWN), 148 48, UNIPHIER_PIN_PULL_DOWN),
151 UNIPHIER_PINCTRL_PIN(42, "MDIO_INTL", 6, 149 UNIPHIER_PINCTRL_PIN(42, "MDIO_INTL", 6,
152 49, UNIPHIER_PIN_DRV_4_8, 150 49, UNIPHIER_PIN_DRV_1BIT,
153 49, UNIPHIER_PIN_PULL_DOWN), 151 49, UNIPHIER_PIN_PULL_DOWN),
154 UNIPHIER_PINCTRL_PIN(43, "PHYRSTL", 6, 152 UNIPHIER_PINCTRL_PIN(43, "PHYRSTL", 6,
155 50, UNIPHIER_PIN_DRV_4_8, 153 50, UNIPHIER_PIN_DRV_1BIT,
156 50, UNIPHIER_PIN_PULL_DOWN), 154 50, UNIPHIER_PIN_PULL_DOWN),
157 UNIPHIER_PINCTRL_PIN(44, "SDCLK", UNIPHIER_PIN_IECTRL_NONE, 155 UNIPHIER_PINCTRL_PIN(44, "SDCLK", UNIPHIER_PIN_IECTRL_NONE,
158 40, UNIPHIER_PIN_DRV_8_12_16_20, 156 10, UNIPHIER_PIN_DRV_2BIT,
159 156, UNIPHIER_PIN_PULL_UP), 157 156, UNIPHIER_PIN_PULL_UP),
160 UNIPHIER_PINCTRL_PIN(45, "SDCMD", UNIPHIER_PIN_IECTRL_NONE, 158 UNIPHIER_PINCTRL_PIN(45, "SDCMD", UNIPHIER_PIN_IECTRL_NONE,
161 44, UNIPHIER_PIN_DRV_8_12_16_20, 159 11, UNIPHIER_PIN_DRV_2BIT,
162 157, UNIPHIER_PIN_PULL_UP), 160 157, UNIPHIER_PIN_PULL_UP),
163 UNIPHIER_PINCTRL_PIN(46, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE, 161 UNIPHIER_PINCTRL_PIN(46, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE,
164 48, UNIPHIER_PIN_DRV_8_12_16_20, 162 12, UNIPHIER_PIN_DRV_2BIT,
165 158, UNIPHIER_PIN_PULL_UP), 163 158, UNIPHIER_PIN_PULL_UP),
166 UNIPHIER_PINCTRL_PIN(47, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE, 164 UNIPHIER_PINCTRL_PIN(47, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE,
167 52, UNIPHIER_PIN_DRV_8_12_16_20, 165 13, UNIPHIER_PIN_DRV_2BIT,
168 159, UNIPHIER_PIN_PULL_UP), 166 159, UNIPHIER_PIN_PULL_UP),
169 UNIPHIER_PINCTRL_PIN(48, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE, 167 UNIPHIER_PINCTRL_PIN(48, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE,
170 56, UNIPHIER_PIN_DRV_8_12_16_20, 168 14, UNIPHIER_PIN_DRV_2BIT,
171 160, UNIPHIER_PIN_PULL_UP), 169 160, UNIPHIER_PIN_PULL_UP),
172 UNIPHIER_PINCTRL_PIN(49, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE, 170 UNIPHIER_PINCTRL_PIN(49, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE,
173 60, UNIPHIER_PIN_DRV_8_12_16_20, 171 15, UNIPHIER_PIN_DRV_2BIT,
174 161, UNIPHIER_PIN_PULL_UP), 172 161, UNIPHIER_PIN_PULL_UP),
175 UNIPHIER_PINCTRL_PIN(50, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 173 UNIPHIER_PINCTRL_PIN(50, "SDCD", UNIPHIER_PIN_IECTRL_NONE,
176 51, UNIPHIER_PIN_DRV_4_8, 174 51, UNIPHIER_PIN_DRV_1BIT,
177 51, UNIPHIER_PIN_PULL_UP), 175 51, UNIPHIER_PIN_PULL_UP),
178 UNIPHIER_PINCTRL_PIN(51, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 176 UNIPHIER_PINCTRL_PIN(51, "SDWP", UNIPHIER_PIN_IECTRL_NONE,
179 52, UNIPHIER_PIN_DRV_4_8, 177 52, UNIPHIER_PIN_DRV_1BIT,
180 52, UNIPHIER_PIN_PULL_UP), 178 52, UNIPHIER_PIN_PULL_UP),
181 UNIPHIER_PINCTRL_PIN(52, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 179 UNIPHIER_PINCTRL_PIN(52, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE,
182 53, UNIPHIER_PIN_DRV_4_8, 180 53, UNIPHIER_PIN_DRV_1BIT,
183 53, UNIPHIER_PIN_PULL_UP), 181 53, UNIPHIER_PIN_PULL_UP),
184 UNIPHIER_PINCTRL_PIN(53, "USB0VBUS", 0, 182 UNIPHIER_PINCTRL_PIN(53, "USB0VBUS", 0,
185 54, UNIPHIER_PIN_DRV_4_8, 183 54, UNIPHIER_PIN_DRV_1BIT,
186 54, UNIPHIER_PIN_PULL_DOWN), 184 54, UNIPHIER_PIN_PULL_DOWN),
187 UNIPHIER_PINCTRL_PIN(54, "USB0OD", 0, 185 UNIPHIER_PINCTRL_PIN(54, "USB0OD", 0,
188 55, UNIPHIER_PIN_DRV_4_8, 186 55, UNIPHIER_PIN_DRV_1BIT,
189 55, UNIPHIER_PIN_PULL_DOWN), 187 55, UNIPHIER_PIN_PULL_DOWN),
190 UNIPHIER_PINCTRL_PIN(55, "USB1VBUS", 0, 188 UNIPHIER_PINCTRL_PIN(55, "USB1VBUS", 0,
191 56, UNIPHIER_PIN_DRV_4_8, 189 56, UNIPHIER_PIN_DRV_1BIT,
192 56, UNIPHIER_PIN_PULL_DOWN), 190 56, UNIPHIER_PIN_PULL_DOWN),
193 UNIPHIER_PINCTRL_PIN(56, "USB1OD", 0, 191 UNIPHIER_PINCTRL_PIN(56, "USB1OD", 0,
194 57, UNIPHIER_PIN_DRV_4_8, 192 57, UNIPHIER_PIN_DRV_1BIT,
195 57, UNIPHIER_PIN_PULL_DOWN), 193 57, UNIPHIER_PIN_PULL_DOWN),
196 UNIPHIER_PINCTRL_PIN(57, "PCRESET", 0, 194 UNIPHIER_PINCTRL_PIN(57, "PCRESET", 0,
197 58, UNIPHIER_PIN_DRV_4_8, 195 58, UNIPHIER_PIN_DRV_1BIT,
198 58, UNIPHIER_PIN_PULL_DOWN), 196 58, UNIPHIER_PIN_PULL_DOWN),
199 UNIPHIER_PINCTRL_PIN(58, "PCREG", 0, 197 UNIPHIER_PINCTRL_PIN(58, "PCREG", 0,
200 59, UNIPHIER_PIN_DRV_4_8, 198 59, UNIPHIER_PIN_DRV_1BIT,
201 59, UNIPHIER_PIN_PULL_DOWN), 199 59, UNIPHIER_PIN_PULL_DOWN),
202 UNIPHIER_PINCTRL_PIN(59, "PCCE2", 0, 200 UNIPHIER_PINCTRL_PIN(59, "PCCE2", 0,
203 60, UNIPHIER_PIN_DRV_4_8, 201 60, UNIPHIER_PIN_DRV_1BIT,
204 60, UNIPHIER_PIN_PULL_DOWN), 202 60, UNIPHIER_PIN_PULL_DOWN),
205 UNIPHIER_PINCTRL_PIN(60, "PCVS1", 0, 203 UNIPHIER_PINCTRL_PIN(60, "PCVS1", 0,
206 61, UNIPHIER_PIN_DRV_4_8, 204 61, UNIPHIER_PIN_DRV_1BIT,
207 61, UNIPHIER_PIN_PULL_DOWN), 205 61, UNIPHIER_PIN_PULL_DOWN),
208 UNIPHIER_PINCTRL_PIN(61, "PCCD2", 0, 206 UNIPHIER_PINCTRL_PIN(61, "PCCD2", 0,
209 62, UNIPHIER_PIN_DRV_4_8, 207 62, UNIPHIER_PIN_DRV_1BIT,
210 62, UNIPHIER_PIN_PULL_DOWN), 208 62, UNIPHIER_PIN_PULL_DOWN),
211 UNIPHIER_PINCTRL_PIN(62, "PCCD1", 0, 209 UNIPHIER_PINCTRL_PIN(62, "PCCD1", 0,
212 63, UNIPHIER_PIN_DRV_4_8, 210 63, UNIPHIER_PIN_DRV_1BIT,
213 63, UNIPHIER_PIN_PULL_DOWN), 211 63, UNIPHIER_PIN_PULL_DOWN),
214 UNIPHIER_PINCTRL_PIN(63, "PCREADY", 0, 212 UNIPHIER_PINCTRL_PIN(63, "PCREADY", 0,
215 64, UNIPHIER_PIN_DRV_4_8, 213 64, UNIPHIER_PIN_DRV_1BIT,
216 64, UNIPHIER_PIN_PULL_DOWN), 214 64, UNIPHIER_PIN_PULL_DOWN),
217 UNIPHIER_PINCTRL_PIN(64, "PCDOE", 0, 215 UNIPHIER_PINCTRL_PIN(64, "PCDOE", 0,
218 65, UNIPHIER_PIN_DRV_4_8, 216 65, UNIPHIER_PIN_DRV_1BIT,
219 65, UNIPHIER_PIN_PULL_DOWN), 217 65, UNIPHIER_PIN_PULL_DOWN),
220 UNIPHIER_PINCTRL_PIN(65, "PCCE1", 0, 218 UNIPHIER_PINCTRL_PIN(65, "PCCE1", 0,
221 66, UNIPHIER_PIN_DRV_4_8, 219 66, UNIPHIER_PIN_DRV_1BIT,
222 66, UNIPHIER_PIN_PULL_DOWN), 220 66, UNIPHIER_PIN_PULL_DOWN),
223 UNIPHIER_PINCTRL_PIN(66, "PCWE", 0, 221 UNIPHIER_PINCTRL_PIN(66, "PCWE", 0,
224 67, UNIPHIER_PIN_DRV_4_8, 222 67, UNIPHIER_PIN_DRV_1BIT,
225 67, UNIPHIER_PIN_PULL_DOWN), 223 67, UNIPHIER_PIN_PULL_DOWN),
226 UNIPHIER_PINCTRL_PIN(67, "PCOE", 0, 224 UNIPHIER_PINCTRL_PIN(67, "PCOE", 0,
227 68, UNIPHIER_PIN_DRV_4_8, 225 68, UNIPHIER_PIN_DRV_1BIT,
228 68, UNIPHIER_PIN_PULL_DOWN), 226 68, UNIPHIER_PIN_PULL_DOWN),
229 UNIPHIER_PINCTRL_PIN(68, "PCWAIT", 0, 227 UNIPHIER_PINCTRL_PIN(68, "PCWAIT", 0,
230 69, UNIPHIER_PIN_DRV_4_8, 228 69, UNIPHIER_PIN_DRV_1BIT,
231 69, UNIPHIER_PIN_PULL_DOWN), 229 69, UNIPHIER_PIN_PULL_DOWN),
232 UNIPHIER_PINCTRL_PIN(69, "PCIOWR", 0, 230 UNIPHIER_PINCTRL_PIN(69, "PCIOWR", 0,
233 70, UNIPHIER_PIN_DRV_4_8, 231 70, UNIPHIER_PIN_DRV_1BIT,
234 70, UNIPHIER_PIN_PULL_DOWN), 232 70, UNIPHIER_PIN_PULL_DOWN),
235 UNIPHIER_PINCTRL_PIN(70, "PCIORD", 0, 233 UNIPHIER_PINCTRL_PIN(70, "PCIORD", 0,
236 71, UNIPHIER_PIN_DRV_4_8, 234 71, UNIPHIER_PIN_DRV_1BIT,
237 71, UNIPHIER_PIN_PULL_DOWN), 235 71, UNIPHIER_PIN_PULL_DOWN),
238 UNIPHIER_PINCTRL_PIN(71, "HS0DIN0", 0, 236 UNIPHIER_PINCTRL_PIN(71, "HS0DIN0", 0,
239 72, UNIPHIER_PIN_DRV_4_8, 237 72, UNIPHIER_PIN_DRV_1BIT,
240 72, UNIPHIER_PIN_PULL_DOWN), 238 72, UNIPHIER_PIN_PULL_DOWN),
241 UNIPHIER_PINCTRL_PIN(72, "HS0DIN1", 0, 239 UNIPHIER_PINCTRL_PIN(72, "HS0DIN1", 0,
242 73, UNIPHIER_PIN_DRV_4_8, 240 73, UNIPHIER_PIN_DRV_1BIT,
243 73, UNIPHIER_PIN_PULL_DOWN), 241 73, UNIPHIER_PIN_PULL_DOWN),
244 UNIPHIER_PINCTRL_PIN(73, "HS0DIN2", 0, 242 UNIPHIER_PINCTRL_PIN(73, "HS0DIN2", 0,
245 74, UNIPHIER_PIN_DRV_4_8, 243 74, UNIPHIER_PIN_DRV_1BIT,
246 74, UNIPHIER_PIN_PULL_DOWN), 244 74, UNIPHIER_PIN_PULL_DOWN),
247 UNIPHIER_PINCTRL_PIN(74, "HS0DIN3", 0, 245 UNIPHIER_PINCTRL_PIN(74, "HS0DIN3", 0,
248 75, UNIPHIER_PIN_DRV_4_8, 246 75, UNIPHIER_PIN_DRV_1BIT,
249 75, UNIPHIER_PIN_PULL_DOWN), 247 75, UNIPHIER_PIN_PULL_DOWN),
250 UNIPHIER_PINCTRL_PIN(75, "HS0DIN4", 0, 248 UNIPHIER_PINCTRL_PIN(75, "HS0DIN4", 0,
251 76, UNIPHIER_PIN_DRV_4_8, 249 76, UNIPHIER_PIN_DRV_1BIT,
252 76, UNIPHIER_PIN_PULL_DOWN), 250 76, UNIPHIER_PIN_PULL_DOWN),
253 UNIPHIER_PINCTRL_PIN(76, "HS0DIN5", 0, 251 UNIPHIER_PINCTRL_PIN(76, "HS0DIN5", 0,
254 77, UNIPHIER_PIN_DRV_4_8, 252 77, UNIPHIER_PIN_DRV_1BIT,
255 77, UNIPHIER_PIN_PULL_DOWN), 253 77, UNIPHIER_PIN_PULL_DOWN),
256 UNIPHIER_PINCTRL_PIN(77, "HS0DIN6", 0, 254 UNIPHIER_PINCTRL_PIN(77, "HS0DIN6", 0,
257 78, UNIPHIER_PIN_DRV_4_8, 255 78, UNIPHIER_PIN_DRV_1BIT,
258 78, UNIPHIER_PIN_PULL_DOWN), 256 78, UNIPHIER_PIN_PULL_DOWN),
259 UNIPHIER_PINCTRL_PIN(78, "HS0DIN7", 0, 257 UNIPHIER_PINCTRL_PIN(78, "HS0DIN7", 0,
260 79, UNIPHIER_PIN_DRV_4_8, 258 79, UNIPHIER_PIN_DRV_1BIT,
261 79, UNIPHIER_PIN_PULL_DOWN), 259 79, UNIPHIER_PIN_PULL_DOWN),
262 UNIPHIER_PINCTRL_PIN(79, "HS0BCLKIN", 0, 260 UNIPHIER_PINCTRL_PIN(79, "HS0BCLKIN", 0,
263 80, UNIPHIER_PIN_DRV_4_8, 261 80, UNIPHIER_PIN_DRV_1BIT,
264 80, UNIPHIER_PIN_PULL_DOWN), 262 80, UNIPHIER_PIN_PULL_DOWN),
265 UNIPHIER_PINCTRL_PIN(80, "HS0VALIN", 0, 263 UNIPHIER_PINCTRL_PIN(80, "HS0VALIN", 0,
266 81, UNIPHIER_PIN_DRV_4_8, 264 81, UNIPHIER_PIN_DRV_1BIT,
267 81, UNIPHIER_PIN_PULL_DOWN), 265 81, UNIPHIER_PIN_PULL_DOWN),
268 UNIPHIER_PINCTRL_PIN(81, "HS0SYNCIN", 0, 266 UNIPHIER_PINCTRL_PIN(81, "HS0SYNCIN", 0,
269 82, UNIPHIER_PIN_DRV_4_8, 267 82, UNIPHIER_PIN_DRV_1BIT,
270 82, UNIPHIER_PIN_PULL_DOWN), 268 82, UNIPHIER_PIN_PULL_DOWN),
271 UNIPHIER_PINCTRL_PIN(82, "HSDOUT0", 0, 269 UNIPHIER_PINCTRL_PIN(82, "HSDOUT0", 0,
272 83, UNIPHIER_PIN_DRV_4_8, 270 83, UNIPHIER_PIN_DRV_1BIT,
273 83, UNIPHIER_PIN_PULL_DOWN), 271 83, UNIPHIER_PIN_PULL_DOWN),
274 UNIPHIER_PINCTRL_PIN(83, "HSDOUT1", 0, 272 UNIPHIER_PINCTRL_PIN(83, "HSDOUT1", 0,
275 84, UNIPHIER_PIN_DRV_4_8, 273 84, UNIPHIER_PIN_DRV_1BIT,
276 84, UNIPHIER_PIN_PULL_DOWN), 274 84, UNIPHIER_PIN_PULL_DOWN),
277 UNIPHIER_PINCTRL_PIN(84, "HSDOUT2", 0, 275 UNIPHIER_PINCTRL_PIN(84, "HSDOUT2", 0,
278 85, UNIPHIER_PIN_DRV_4_8, 276 85, UNIPHIER_PIN_DRV_1BIT,
279 85, UNIPHIER_PIN_PULL_DOWN), 277 85, UNIPHIER_PIN_PULL_DOWN),
280 UNIPHIER_PINCTRL_PIN(85, "HSDOUT3", 0, 278 UNIPHIER_PINCTRL_PIN(85, "HSDOUT3", 0,
281 86, UNIPHIER_PIN_DRV_4_8, 279 86, UNIPHIER_PIN_DRV_1BIT,
282 86, UNIPHIER_PIN_PULL_DOWN), 280 86, UNIPHIER_PIN_PULL_DOWN),
283 UNIPHIER_PINCTRL_PIN(86, "HSDOUT4", 0, 281 UNIPHIER_PINCTRL_PIN(86, "HSDOUT4", 0,
284 87, UNIPHIER_PIN_DRV_4_8, 282 87, UNIPHIER_PIN_DRV_1BIT,
285 87, UNIPHIER_PIN_PULL_DOWN), 283 87, UNIPHIER_PIN_PULL_DOWN),
286 UNIPHIER_PINCTRL_PIN(87, "HSDOUT5", 0, 284 UNIPHIER_PINCTRL_PIN(87, "HSDOUT5", 0,
287 88, UNIPHIER_PIN_DRV_4_8, 285 88, UNIPHIER_PIN_DRV_1BIT,
288 88, UNIPHIER_PIN_PULL_DOWN), 286 88, UNIPHIER_PIN_PULL_DOWN),
289 UNIPHIER_PINCTRL_PIN(88, "HSDOUT6", 0, 287 UNIPHIER_PINCTRL_PIN(88, "HSDOUT6", 0,
290 89, UNIPHIER_PIN_DRV_4_8, 288 89, UNIPHIER_PIN_DRV_1BIT,
291 89, UNIPHIER_PIN_PULL_DOWN), 289 89, UNIPHIER_PIN_PULL_DOWN),
292 UNIPHIER_PINCTRL_PIN(89, "HSDOUT7", 0, 290 UNIPHIER_PINCTRL_PIN(89, "HSDOUT7", 0,
293 90, UNIPHIER_PIN_DRV_4_8, 291 90, UNIPHIER_PIN_DRV_1BIT,
294 90, UNIPHIER_PIN_PULL_DOWN), 292 90, UNIPHIER_PIN_PULL_DOWN),
295 UNIPHIER_PINCTRL_PIN(90, "HSBCLKOUT", 0, 293 UNIPHIER_PINCTRL_PIN(90, "HSBCLKOUT", 0,
296 91, UNIPHIER_PIN_DRV_4_8, 294 91, UNIPHIER_PIN_DRV_1BIT,
297 91, UNIPHIER_PIN_PULL_DOWN), 295 91, UNIPHIER_PIN_PULL_DOWN),
298 UNIPHIER_PINCTRL_PIN(91, "HSVALOUT", 0, 296 UNIPHIER_PINCTRL_PIN(91, "HSVALOUT", 0,
299 92, UNIPHIER_PIN_DRV_4_8, 297 92, UNIPHIER_PIN_DRV_1BIT,
300 92, UNIPHIER_PIN_PULL_DOWN), 298 92, UNIPHIER_PIN_PULL_DOWN),
301 UNIPHIER_PINCTRL_PIN(92, "HSSYNCOUT", 0, 299 UNIPHIER_PINCTRL_PIN(92, "HSSYNCOUT", 0,
302 93, UNIPHIER_PIN_DRV_4_8, 300 93, UNIPHIER_PIN_DRV_1BIT,
303 93, UNIPHIER_PIN_PULL_DOWN), 301 93, UNIPHIER_PIN_PULL_DOWN),
304 UNIPHIER_PINCTRL_PIN(93, "AGCI", 3, 302 UNIPHIER_PINCTRL_PIN(93, "AGCI", 3,
305 -1, UNIPHIER_PIN_DRV_FIXED_4, 303 -1, UNIPHIER_PIN_DRV_FIXED4,
306 162, UNIPHIER_PIN_PULL_DOWN), 304 162, UNIPHIER_PIN_PULL_DOWN),
307 UNIPHIER_PINCTRL_PIN(94, "AGCR", 4, 305 UNIPHIER_PINCTRL_PIN(94, "AGCR", 4,
308 -1, UNIPHIER_PIN_DRV_FIXED_4, 306 -1, UNIPHIER_PIN_DRV_FIXED4,
309 163, UNIPHIER_PIN_PULL_DOWN), 307 163, UNIPHIER_PIN_PULL_DOWN),
310 UNIPHIER_PINCTRL_PIN(95, "AGCBS", 5, 308 UNIPHIER_PINCTRL_PIN(95, "AGCBS", 5,
311 -1, UNIPHIER_PIN_DRV_FIXED_4, 309 -1, UNIPHIER_PIN_DRV_FIXED4,
312 164, UNIPHIER_PIN_PULL_DOWN), 310 164, UNIPHIER_PIN_PULL_DOWN),
313 UNIPHIER_PINCTRL_PIN(96, "IECOUT", 0, 311 UNIPHIER_PINCTRL_PIN(96, "IECOUT", 0,
314 94, UNIPHIER_PIN_DRV_4_8, 312 94, UNIPHIER_PIN_DRV_1BIT,
315 94, UNIPHIER_PIN_PULL_DOWN), 313 94, UNIPHIER_PIN_PULL_DOWN),
316 UNIPHIER_PINCTRL_PIN(97, "ASMCK", 0, 314 UNIPHIER_PINCTRL_PIN(97, "ASMCK", 0,
317 95, UNIPHIER_PIN_DRV_4_8, 315 95, UNIPHIER_PIN_DRV_1BIT,
318 95, UNIPHIER_PIN_PULL_DOWN), 316 95, UNIPHIER_PIN_PULL_DOWN),
319 UNIPHIER_PINCTRL_PIN(98, "ABCKO", UNIPHIER_PIN_IECTRL_NONE, 317 UNIPHIER_PINCTRL_PIN(98, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
320 96, UNIPHIER_PIN_DRV_4_8, 318 96, UNIPHIER_PIN_DRV_1BIT,
321 96, UNIPHIER_PIN_PULL_DOWN), 319 96, UNIPHIER_PIN_PULL_DOWN),
322 UNIPHIER_PINCTRL_PIN(99, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE, 320 UNIPHIER_PINCTRL_PIN(99, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
323 97, UNIPHIER_PIN_DRV_4_8, 321 97, UNIPHIER_PIN_DRV_1BIT,
324 97, UNIPHIER_PIN_PULL_DOWN), 322 97, UNIPHIER_PIN_PULL_DOWN),
325 UNIPHIER_PINCTRL_PIN(100, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE, 323 UNIPHIER_PINCTRL_PIN(100, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
326 98, UNIPHIER_PIN_DRV_4_8, 324 98, UNIPHIER_PIN_DRV_1BIT,
327 98, UNIPHIER_PIN_PULL_DOWN), 325 98, UNIPHIER_PIN_PULL_DOWN),
328 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0, 326 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
329 99, UNIPHIER_PIN_DRV_4_8, 327 99, UNIPHIER_PIN_DRV_1BIT,
330 99, UNIPHIER_PIN_PULL_DOWN), 328 99, UNIPHIER_PIN_PULL_DOWN),
331 UNIPHIER_PINCTRL_PIN(102, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 329 UNIPHIER_PINCTRL_PIN(102, "SDA0", UNIPHIER_PIN_IECTRL_NONE,
332 -1, UNIPHIER_PIN_DRV_FIXED_4, 330 -1, UNIPHIER_PIN_DRV_FIXED4,
333 -1, UNIPHIER_PIN_PULL_NONE), 331 -1, UNIPHIER_PIN_PULL_NONE),
334 UNIPHIER_PINCTRL_PIN(103, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 332 UNIPHIER_PINCTRL_PIN(103, "SCL0", UNIPHIER_PIN_IECTRL_NONE,
335 -1, UNIPHIER_PIN_DRV_FIXED_4, 333 -1, UNIPHIER_PIN_DRV_FIXED4,
336 -1, UNIPHIER_PIN_PULL_NONE), 334 -1, UNIPHIER_PIN_PULL_NONE),
337 UNIPHIER_PINCTRL_PIN(104, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 335 UNIPHIER_PINCTRL_PIN(104, "SDA1", UNIPHIER_PIN_IECTRL_NONE,
338 -1, UNIPHIER_PIN_DRV_FIXED_4, 336 -1, UNIPHIER_PIN_DRV_FIXED4,
339 -1, UNIPHIER_PIN_PULL_NONE), 337 -1, UNIPHIER_PIN_PULL_NONE),
340 UNIPHIER_PINCTRL_PIN(105, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 338 UNIPHIER_PINCTRL_PIN(105, "SCL1", UNIPHIER_PIN_IECTRL_NONE,
341 -1, UNIPHIER_PIN_DRV_FIXED_4, 339 -1, UNIPHIER_PIN_DRV_FIXED4,
342 -1, UNIPHIER_PIN_PULL_NONE), 340 -1, UNIPHIER_PIN_PULL_NONE),
343 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", UNIPHIER_PIN_IECTRL_NONE, 341 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", UNIPHIER_PIN_IECTRL_NONE,
344 -1, UNIPHIER_PIN_DRV_FIXED_4, 342 -1, UNIPHIER_PIN_DRV_FIXED4,
345 -1, UNIPHIER_PIN_PULL_NONE), 343 -1, UNIPHIER_PIN_PULL_NONE),
346 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", UNIPHIER_PIN_IECTRL_NONE, 344 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", UNIPHIER_PIN_IECTRL_NONE,
347 -1, UNIPHIER_PIN_DRV_FIXED_4, 345 -1, UNIPHIER_PIN_DRV_FIXED4,
348 -1, UNIPHIER_PIN_PULL_NONE), 346 -1, UNIPHIER_PIN_PULL_NONE),
349 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", UNIPHIER_PIN_IECTRL_NONE, 347 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", UNIPHIER_PIN_IECTRL_NONE,
350 -1, UNIPHIER_PIN_DRV_FIXED_4, 348 -1, UNIPHIER_PIN_DRV_FIXED4,
351 -1, UNIPHIER_PIN_PULL_NONE), 349 -1, UNIPHIER_PIN_PULL_NONE),
352 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", UNIPHIER_PIN_IECTRL_NONE, 350 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", UNIPHIER_PIN_IECTRL_NONE,
353 -1, UNIPHIER_PIN_DRV_FIXED_4, 351 -1, UNIPHIER_PIN_DRV_FIXED4,
354 -1, UNIPHIER_PIN_PULL_NONE), 352 -1, UNIPHIER_PIN_PULL_NONE),
355 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE, 353 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
356 100, UNIPHIER_PIN_DRV_4_8, 354 100, UNIPHIER_PIN_DRV_1BIT,
357 100, UNIPHIER_PIN_PULL_UP), 355 100, UNIPHIER_PIN_PULL_UP),
358 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE, 356 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
359 101, UNIPHIER_PIN_DRV_4_8, 357 101, UNIPHIER_PIN_DRV_1BIT,
360 101, UNIPHIER_PIN_PULL_UP), 358 101, UNIPHIER_PIN_PULL_UP),
361 UNIPHIER_PINCTRL_PIN(112, "HIN", 1, 359 UNIPHIER_PINCTRL_PIN(112, "HIN", 1,
362 -1, UNIPHIER_PIN_DRV_FIXED_5, 360 -1, UNIPHIER_PIN_DRV_FIXED5,
363 -1, UNIPHIER_PIN_PULL_NONE), 361 -1, UNIPHIER_PIN_PULL_NONE),
364 UNIPHIER_PINCTRL_PIN(113, "VIN", 2, 362 UNIPHIER_PINCTRL_PIN(113, "VIN", 2,
365 -1, UNIPHIER_PIN_DRV_FIXED_5, 363 -1, UNIPHIER_PIN_DRV_FIXED5,
366 -1, UNIPHIER_PIN_PULL_NONE), 364 -1, UNIPHIER_PIN_PULL_NONE),
367 UNIPHIER_PINCTRL_PIN(114, "TCON0", UNIPHIER_PIN_IECTRL_NONE, 365 UNIPHIER_PINCTRL_PIN(114, "TCON0", UNIPHIER_PIN_IECTRL_NONE,
368 102, UNIPHIER_PIN_DRV_4_8, 366 102, UNIPHIER_PIN_DRV_1BIT,
369 102, UNIPHIER_PIN_PULL_DOWN), 367 102, UNIPHIER_PIN_PULL_DOWN),
370 UNIPHIER_PINCTRL_PIN(115, "TCON1", UNIPHIER_PIN_IECTRL_NONE, 368 UNIPHIER_PINCTRL_PIN(115, "TCON1", UNIPHIER_PIN_IECTRL_NONE,
371 103, UNIPHIER_PIN_DRV_4_8, 369 103, UNIPHIER_PIN_DRV_1BIT,
372 103, UNIPHIER_PIN_PULL_DOWN), 370 103, UNIPHIER_PIN_PULL_DOWN),
373 UNIPHIER_PINCTRL_PIN(116, "TCON2", UNIPHIER_PIN_IECTRL_NONE, 371 UNIPHIER_PINCTRL_PIN(116, "TCON2", UNIPHIER_PIN_IECTRL_NONE,
374 104, UNIPHIER_PIN_DRV_4_8, 372 104, UNIPHIER_PIN_DRV_1BIT,
375 104, UNIPHIER_PIN_PULL_DOWN), 373 104, UNIPHIER_PIN_PULL_DOWN),
376 UNIPHIER_PINCTRL_PIN(117, "TCON3", UNIPHIER_PIN_IECTRL_NONE, 374 UNIPHIER_PINCTRL_PIN(117, "TCON3", UNIPHIER_PIN_IECTRL_NONE,
377 105, UNIPHIER_PIN_DRV_4_8, 375 105, UNIPHIER_PIN_DRV_1BIT,
378 105, UNIPHIER_PIN_PULL_DOWN), 376 105, UNIPHIER_PIN_PULL_DOWN),
379 UNIPHIER_PINCTRL_PIN(118, "TCON4", UNIPHIER_PIN_IECTRL_NONE, 377 UNIPHIER_PINCTRL_PIN(118, "TCON4", UNIPHIER_PIN_IECTRL_NONE,
380 106, UNIPHIER_PIN_DRV_4_8, 378 106, UNIPHIER_PIN_DRV_1BIT,
381 106, UNIPHIER_PIN_PULL_DOWN), 379 106, UNIPHIER_PIN_PULL_DOWN),
382 UNIPHIER_PINCTRL_PIN(119, "TCON5", UNIPHIER_PIN_IECTRL_NONE, 380 UNIPHIER_PINCTRL_PIN(119, "TCON5", UNIPHIER_PIN_IECTRL_NONE,
383 107, UNIPHIER_PIN_DRV_4_8, 381 107, UNIPHIER_PIN_DRV_1BIT,
384 107, UNIPHIER_PIN_PULL_DOWN), 382 107, UNIPHIER_PIN_PULL_DOWN),
385 UNIPHIER_PINCTRL_PIN(120, "TCON6", 0, 383 UNIPHIER_PINCTRL_PIN(120, "TCON6", 0,
386 108, UNIPHIER_PIN_DRV_4_8, 384 108, UNIPHIER_PIN_DRV_1BIT,
387 108, UNIPHIER_PIN_PULL_DOWN), 385 108, UNIPHIER_PIN_PULL_DOWN),
388 UNIPHIER_PINCTRL_PIN(121, "TCON7", 0, 386 UNIPHIER_PINCTRL_PIN(121, "TCON7", 0,
389 109, UNIPHIER_PIN_DRV_4_8, 387 109, UNIPHIER_PIN_DRV_1BIT,
390 109, UNIPHIER_PIN_PULL_DOWN), 388 109, UNIPHIER_PIN_PULL_DOWN),
391 UNIPHIER_PINCTRL_PIN(122, "PWMA", 0, 389 UNIPHIER_PINCTRL_PIN(122, "PWMA", 0,
392 110, UNIPHIER_PIN_DRV_4_8, 390 110, UNIPHIER_PIN_DRV_1BIT,
393 110, UNIPHIER_PIN_PULL_DOWN), 391 110, UNIPHIER_PIN_PULL_DOWN),
394 UNIPHIER_PINCTRL_PIN(123, "XIRQ1", 0, 392 UNIPHIER_PINCTRL_PIN(123, "XIRQ1", 0,
395 111, UNIPHIER_PIN_DRV_4_8, 393 111, UNIPHIER_PIN_DRV_1BIT,
396 111, UNIPHIER_PIN_PULL_DOWN), 394 111, UNIPHIER_PIN_PULL_DOWN),
397 UNIPHIER_PINCTRL_PIN(124, "XIRQ2", 0, 395 UNIPHIER_PINCTRL_PIN(124, "XIRQ2", 0,
398 112, UNIPHIER_PIN_DRV_4_8, 396 112, UNIPHIER_PIN_DRV_1BIT,
399 112, UNIPHIER_PIN_PULL_DOWN), 397 112, UNIPHIER_PIN_PULL_DOWN),
400 UNIPHIER_PINCTRL_PIN(125, "XIRQ3", 0, 398 UNIPHIER_PINCTRL_PIN(125, "XIRQ3", 0,
401 113, UNIPHIER_PIN_DRV_4_8, 399 113, UNIPHIER_PIN_DRV_1BIT,
402 113, UNIPHIER_PIN_PULL_DOWN), 400 113, UNIPHIER_PIN_PULL_DOWN),
403 UNIPHIER_PINCTRL_PIN(126, "XIRQ4", 0, 401 UNIPHIER_PINCTRL_PIN(126, "XIRQ4", 0,
404 114, UNIPHIER_PIN_DRV_4_8, 402 114, UNIPHIER_PIN_DRV_1BIT,
405 114, UNIPHIER_PIN_PULL_DOWN), 403 114, UNIPHIER_PIN_PULL_DOWN),
406 UNIPHIER_PINCTRL_PIN(127, "XIRQ5", 0, 404 UNIPHIER_PINCTRL_PIN(127, "XIRQ5", 0,
407 115, UNIPHIER_PIN_DRV_4_8, 405 115, UNIPHIER_PIN_DRV_1BIT,
408 115, UNIPHIER_PIN_PULL_DOWN), 406 115, UNIPHIER_PIN_PULL_DOWN),
409 UNIPHIER_PINCTRL_PIN(128, "XIRQ6", 0, 407 UNIPHIER_PINCTRL_PIN(128, "XIRQ6", 0,
410 116, UNIPHIER_PIN_DRV_4_8, 408 116, UNIPHIER_PIN_DRV_1BIT,
411 116, UNIPHIER_PIN_PULL_DOWN), 409 116, UNIPHIER_PIN_PULL_DOWN),
412 UNIPHIER_PINCTRL_PIN(129, "XIRQ7", 0, 410 UNIPHIER_PINCTRL_PIN(129, "XIRQ7", 0,
413 117, UNIPHIER_PIN_DRV_4_8, 411 117, UNIPHIER_PIN_DRV_1BIT,
414 117, UNIPHIER_PIN_PULL_DOWN), 412 117, UNIPHIER_PIN_PULL_DOWN),
415 UNIPHIER_PINCTRL_PIN(130, "XIRQ8", 0, 413 UNIPHIER_PINCTRL_PIN(130, "XIRQ8", 0,
416 118, UNIPHIER_PIN_DRV_4_8, 414 118, UNIPHIER_PIN_DRV_1BIT,
417 118, UNIPHIER_PIN_PULL_DOWN), 415 118, UNIPHIER_PIN_PULL_DOWN),
418 UNIPHIER_PINCTRL_PIN(131, "XIRQ9", 0, 416 UNIPHIER_PINCTRL_PIN(131, "XIRQ9", 0,
419 119, UNIPHIER_PIN_DRV_4_8, 417 119, UNIPHIER_PIN_DRV_1BIT,
420 119, UNIPHIER_PIN_PULL_DOWN), 418 119, UNIPHIER_PIN_PULL_DOWN),
421 UNIPHIER_PINCTRL_PIN(132, "XIRQ10", 0, 419 UNIPHIER_PINCTRL_PIN(132, "XIRQ10", 0,
422 120, UNIPHIER_PIN_DRV_4_8, 420 120, UNIPHIER_PIN_DRV_1BIT,
423 120, UNIPHIER_PIN_PULL_DOWN), 421 120, UNIPHIER_PIN_PULL_DOWN),
424 UNIPHIER_PINCTRL_PIN(133, "XIRQ11", 0, 422 UNIPHIER_PINCTRL_PIN(133, "XIRQ11", 0,
425 121, UNIPHIER_PIN_DRV_4_8, 423 121, UNIPHIER_PIN_DRV_1BIT,
426 121, UNIPHIER_PIN_PULL_DOWN), 424 121, UNIPHIER_PIN_PULL_DOWN),
427 UNIPHIER_PINCTRL_PIN(134, "XIRQ14", 0, 425 UNIPHIER_PINCTRL_PIN(134, "XIRQ14", 0,
428 122, UNIPHIER_PIN_DRV_4_8, 426 122, UNIPHIER_PIN_DRV_1BIT,
429 122, UNIPHIER_PIN_PULL_DOWN), 427 122, UNIPHIER_PIN_PULL_DOWN),
430 UNIPHIER_PINCTRL_PIN(135, "PORT00", 0, 428 UNIPHIER_PINCTRL_PIN(135, "PORT00", 0,
431 123, UNIPHIER_PIN_DRV_4_8, 429 123, UNIPHIER_PIN_DRV_1BIT,
432 123, UNIPHIER_PIN_PULL_DOWN), 430 123, UNIPHIER_PIN_PULL_DOWN),
433 UNIPHIER_PINCTRL_PIN(136, "PORT01", 0, 431 UNIPHIER_PINCTRL_PIN(136, "PORT01", 0,
434 124, UNIPHIER_PIN_DRV_4_8, 432 124, UNIPHIER_PIN_DRV_1BIT,
435 124, UNIPHIER_PIN_PULL_DOWN), 433 124, UNIPHIER_PIN_PULL_DOWN),
436 UNIPHIER_PINCTRL_PIN(137, "PORT02", 0, 434 UNIPHIER_PINCTRL_PIN(137, "PORT02", 0,
437 125, UNIPHIER_PIN_DRV_4_8, 435 125, UNIPHIER_PIN_DRV_1BIT,
438 125, UNIPHIER_PIN_PULL_DOWN), 436 125, UNIPHIER_PIN_PULL_DOWN),
439 UNIPHIER_PINCTRL_PIN(138, "PORT03", 0, 437 UNIPHIER_PINCTRL_PIN(138, "PORT03", 0,
440 126, UNIPHIER_PIN_DRV_4_8, 438 126, UNIPHIER_PIN_DRV_1BIT,
441 126, UNIPHIER_PIN_PULL_DOWN), 439 126, UNIPHIER_PIN_PULL_DOWN),
442 UNIPHIER_PINCTRL_PIN(139, "PORT04", 0, 440 UNIPHIER_PINCTRL_PIN(139, "PORT04", 0,
443 127, UNIPHIER_PIN_DRV_4_8, 441 127, UNIPHIER_PIN_DRV_1BIT,
444 127, UNIPHIER_PIN_PULL_DOWN), 442 127, UNIPHIER_PIN_PULL_DOWN),
445 UNIPHIER_PINCTRL_PIN(140, "PORT05", 0, 443 UNIPHIER_PINCTRL_PIN(140, "PORT05", 0,
446 128, UNIPHIER_PIN_DRV_4_8, 444 128, UNIPHIER_PIN_DRV_1BIT,
447 128, UNIPHIER_PIN_PULL_DOWN), 445 128, UNIPHIER_PIN_PULL_DOWN),
448 UNIPHIER_PINCTRL_PIN(141, "PORT06", 0, 446 UNIPHIER_PINCTRL_PIN(141, "PORT06", 0,
449 129, UNIPHIER_PIN_DRV_4_8, 447 129, UNIPHIER_PIN_DRV_1BIT,
450 129, UNIPHIER_PIN_PULL_DOWN), 448 129, UNIPHIER_PIN_PULL_DOWN),
451 UNIPHIER_PINCTRL_PIN(142, "PORT07", 0, 449 UNIPHIER_PINCTRL_PIN(142, "PORT07", 0,
452 130, UNIPHIER_PIN_DRV_4_8, 450 130, UNIPHIER_PIN_DRV_1BIT,
453 130, UNIPHIER_PIN_PULL_DOWN), 451 130, UNIPHIER_PIN_PULL_DOWN),
454 UNIPHIER_PINCTRL_PIN(143, "PORT10", 0, 452 UNIPHIER_PINCTRL_PIN(143, "PORT10", 0,
455 131, UNIPHIER_PIN_DRV_4_8, 453 131, UNIPHIER_PIN_DRV_1BIT,
456 131, UNIPHIER_PIN_PULL_DOWN), 454 131, UNIPHIER_PIN_PULL_DOWN),
457 UNIPHIER_PINCTRL_PIN(144, "PORT11", 0, 455 UNIPHIER_PINCTRL_PIN(144, "PORT11", 0,
458 132, UNIPHIER_PIN_DRV_4_8, 456 132, UNIPHIER_PIN_DRV_1BIT,
459 132, UNIPHIER_PIN_PULL_DOWN), 457 132, UNIPHIER_PIN_PULL_DOWN),
460 UNIPHIER_PINCTRL_PIN(145, "PORT12", 0, 458 UNIPHIER_PINCTRL_PIN(145, "PORT12", 0,
461 133, UNIPHIER_PIN_DRV_4_8, 459 133, UNIPHIER_PIN_DRV_1BIT,
462 133, UNIPHIER_PIN_PULL_DOWN), 460 133, UNIPHIER_PIN_PULL_DOWN),
463 UNIPHIER_PINCTRL_PIN(146, "PORT13", 0, 461 UNIPHIER_PINCTRL_PIN(146, "PORT13", 0,
464 134, UNIPHIER_PIN_DRV_4_8, 462 134, UNIPHIER_PIN_DRV_1BIT,
465 134, UNIPHIER_PIN_PULL_DOWN), 463 134, UNIPHIER_PIN_PULL_DOWN),
466 UNIPHIER_PINCTRL_PIN(147, "PORT14", 0, 464 UNIPHIER_PINCTRL_PIN(147, "PORT14", 0,
467 135, UNIPHIER_PIN_DRV_4_8, 465 135, UNIPHIER_PIN_DRV_1BIT,
468 135, UNIPHIER_PIN_PULL_DOWN), 466 135, UNIPHIER_PIN_PULL_DOWN),
469 UNIPHIER_PINCTRL_PIN(148, "PORT15", 0, 467 UNIPHIER_PINCTRL_PIN(148, "PORT15", 0,
470 136, UNIPHIER_PIN_DRV_4_8, 468 136, UNIPHIER_PIN_DRV_1BIT,
471 136, UNIPHIER_PIN_PULL_DOWN), 469 136, UNIPHIER_PIN_PULL_DOWN),
472 UNIPHIER_PINCTRL_PIN(149, "PORT16", 0, 470 UNIPHIER_PINCTRL_PIN(149, "PORT16", 0,
473 137, UNIPHIER_PIN_DRV_4_8, 471 137, UNIPHIER_PIN_DRV_1BIT,
474 137, UNIPHIER_PIN_PULL_DOWN), 472 137, UNIPHIER_PIN_PULL_DOWN),
475 UNIPHIER_PINCTRL_PIN(150, "PORT17", UNIPHIER_PIN_IECTRL_NONE, 473 UNIPHIER_PINCTRL_PIN(150, "PORT17", UNIPHIER_PIN_IECTRL_NONE,
476 138, UNIPHIER_PIN_DRV_4_8, 474 138, UNIPHIER_PIN_DRV_1BIT,
477 138, UNIPHIER_PIN_PULL_DOWN), 475 138, UNIPHIER_PIN_PULL_DOWN),
478 UNIPHIER_PINCTRL_PIN(151, "PORT20", 0, 476 UNIPHIER_PINCTRL_PIN(151, "PORT20", 0,
479 139, UNIPHIER_PIN_DRV_4_8, 477 139, UNIPHIER_PIN_DRV_1BIT,
480 139, UNIPHIER_PIN_PULL_DOWN), 478 139, UNIPHIER_PIN_PULL_DOWN),
481 UNIPHIER_PINCTRL_PIN(152, "PORT21", 0, 479 UNIPHIER_PINCTRL_PIN(152, "PORT21", 0,
482 140, UNIPHIER_PIN_DRV_4_8, 480 140, UNIPHIER_PIN_DRV_1BIT,
483 140, UNIPHIER_PIN_PULL_DOWN), 481 140, UNIPHIER_PIN_PULL_DOWN),
484 UNIPHIER_PINCTRL_PIN(153, "PORT22", 0, 482 UNIPHIER_PINCTRL_PIN(153, "PORT22", 0,
485 141, UNIPHIER_PIN_DRV_4_8, 483 141, UNIPHIER_PIN_DRV_1BIT,
486 141, UNIPHIER_PIN_PULL_DOWN), 484 141, UNIPHIER_PIN_PULL_DOWN),
487 UNIPHIER_PINCTRL_PIN(154, "PORT23", 0, 485 UNIPHIER_PINCTRL_PIN(154, "PORT23", 0,
488 142, UNIPHIER_PIN_DRV_4_8, 486 142, UNIPHIER_PIN_DRV_1BIT,
489 142, UNIPHIER_PIN_PULL_DOWN), 487 142, UNIPHIER_PIN_PULL_DOWN),
490 UNIPHIER_PINCTRL_PIN(155, "PORT24", UNIPHIER_PIN_IECTRL_NONE, 488 UNIPHIER_PINCTRL_PIN(155, "PORT24", UNIPHIER_PIN_IECTRL_NONE,
491 143, UNIPHIER_PIN_DRV_4_8, 489 143, UNIPHIER_PIN_DRV_1BIT,
492 143, UNIPHIER_PIN_PULL_DOWN), 490 143, UNIPHIER_PIN_PULL_DOWN),
493 UNIPHIER_PINCTRL_PIN(156, "PORT25", 0, 491 UNIPHIER_PINCTRL_PIN(156, "PORT25", 0,
494 144, UNIPHIER_PIN_DRV_4_8, 492 144, UNIPHIER_PIN_DRV_1BIT,
495 144, UNIPHIER_PIN_PULL_DOWN), 493 144, UNIPHIER_PIN_PULL_DOWN),
496 UNIPHIER_PINCTRL_PIN(157, "PORT26", 0, 494 UNIPHIER_PINCTRL_PIN(157, "PORT26", 0,
497 145, UNIPHIER_PIN_DRV_4_8, 495 145, UNIPHIER_PIN_DRV_1BIT,
498 145, UNIPHIER_PIN_PULL_DOWN), 496 145, UNIPHIER_PIN_PULL_DOWN),
499 UNIPHIER_PINCTRL_PIN(158, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 497 UNIPHIER_PINCTRL_PIN(158, "XNFRE", UNIPHIER_PIN_IECTRL_NONE,
500 31, UNIPHIER_PIN_DRV_4_8, 498 31, UNIPHIER_PIN_DRV_1BIT,
501 31, UNIPHIER_PIN_PULL_UP), 499 31, UNIPHIER_PIN_PULL_UP),
502 UNIPHIER_PINCTRL_PIN(159, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 500 UNIPHIER_PINCTRL_PIN(159, "XNFWE", UNIPHIER_PIN_IECTRL_NONE,
503 32, UNIPHIER_PIN_DRV_4_8, 501 32, UNIPHIER_PIN_DRV_1BIT,
504 32, UNIPHIER_PIN_PULL_UP), 502 32, UNIPHIER_PIN_PULL_UP),
505 UNIPHIER_PINCTRL_PIN(160, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 503 UNIPHIER_PINCTRL_PIN(160, "NFALE", UNIPHIER_PIN_IECTRL_NONE,
506 33, UNIPHIER_PIN_DRV_4_8, 504 33, UNIPHIER_PIN_DRV_1BIT,
507 33, UNIPHIER_PIN_PULL_DOWN), 505 33, UNIPHIER_PIN_PULL_DOWN),
508 UNIPHIER_PINCTRL_PIN(161, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 506 UNIPHIER_PINCTRL_PIN(161, "NFCLE", UNIPHIER_PIN_IECTRL_NONE,
509 34, UNIPHIER_PIN_DRV_4_8, 507 34, UNIPHIER_PIN_DRV_1BIT,
510 34, UNIPHIER_PIN_PULL_DOWN), 508 34, UNIPHIER_PIN_PULL_DOWN),
511 UNIPHIER_PINCTRL_PIN(162, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 509 UNIPHIER_PINCTRL_PIN(162, "XNFWP", UNIPHIER_PIN_IECTRL_NONE,
512 35, UNIPHIER_PIN_DRV_4_8, 510 35, UNIPHIER_PIN_DRV_1BIT,
513 35, UNIPHIER_PIN_PULL_DOWN), 511 35, UNIPHIER_PIN_PULL_DOWN),
514 UNIPHIER_PINCTRL_PIN(163, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 512 UNIPHIER_PINCTRL_PIN(163, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE,
515 36, UNIPHIER_PIN_DRV_4_8, 513 36, UNIPHIER_PIN_DRV_1BIT,
516 36, UNIPHIER_PIN_PULL_UP), 514 36, UNIPHIER_PIN_PULL_UP),
517 UNIPHIER_PINCTRL_PIN(164, "NANDRYBY0", UNIPHIER_PIN_IECTRL_NONE, 515 UNIPHIER_PINCTRL_PIN(164, "NANDRYBY0", UNIPHIER_PIN_IECTRL_NONE,
518 37, UNIPHIER_PIN_DRV_4_8, 516 37, UNIPHIER_PIN_DRV_1BIT,
519 37, UNIPHIER_PIN_PULL_UP), 517 37, UNIPHIER_PIN_PULL_UP),
518 /* dedicated pins */
519 UNIPHIER_PINCTRL_PIN(165, "ED0", -1,
520 0, UNIPHIER_PIN_DRV_1BIT,
521 0, UNIPHIER_PIN_PULL_DOWN),
522 UNIPHIER_PINCTRL_PIN(166, "ED1", -1,
523 1, UNIPHIER_PIN_DRV_1BIT,
524 1, UNIPHIER_PIN_PULL_DOWN),
525 UNIPHIER_PINCTRL_PIN(167, "ED2", -1,
526 2, UNIPHIER_PIN_DRV_1BIT,
527 2, UNIPHIER_PIN_PULL_DOWN),
528 UNIPHIER_PINCTRL_PIN(168, "ED3", -1,
529 3, UNIPHIER_PIN_DRV_1BIT,
530 3, UNIPHIER_PIN_PULL_DOWN),
531 UNIPHIER_PINCTRL_PIN(169, "ED4", -1,
532 4, UNIPHIER_PIN_DRV_1BIT,
533 4, UNIPHIER_PIN_PULL_DOWN),
534 UNIPHIER_PINCTRL_PIN(170, "ED5", -1,
535 5, UNIPHIER_PIN_DRV_1BIT,
536 5, UNIPHIER_PIN_PULL_DOWN),
537 UNIPHIER_PINCTRL_PIN(171, "ED6", -1,
538 6, UNIPHIER_PIN_DRV_1BIT,
539 6, UNIPHIER_PIN_PULL_DOWN),
540 UNIPHIER_PINCTRL_PIN(172, "ED7", -1,
541 7, UNIPHIER_PIN_DRV_1BIT,
542 7, UNIPHIER_PIN_PULL_DOWN),
543 UNIPHIER_PINCTRL_PIN(173, "ERXW", -1,
544 26, UNIPHIER_PIN_DRV_1BIT,
545 26, UNIPHIER_PIN_PULL_UP),
546 UNIPHIER_PINCTRL_PIN(174, "XECS1", -1,
547 30, UNIPHIER_PIN_DRV_1BIT,
548 30, UNIPHIER_PIN_PULL_UP),
520}; 549};
521 550
522static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; 551static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
523static const unsigned emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1}; 552static const int emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1};
524static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; 553static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
525static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 554static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
555static const unsigned ether_mii_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40,
556 41, 42, 43, 136, 137, 138, 139, 140,
557 141, 142};
558static const int ether_mii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
559 4, 4, 4, 4, 4, 4, 4};
560static const unsigned ether_rmii_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40,
561 41, 42, 43};
562static const int ether_rmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
526static const unsigned i2c0_pins[] = {102, 103}; 563static const unsigned i2c0_pins[] = {102, 103};
527static const unsigned i2c0_muxvals[] = {0, 0}; 564static const int i2c0_muxvals[] = {0, 0};
528static const unsigned i2c1_pins[] = {104, 105}; 565static const unsigned i2c1_pins[] = {104, 105};
529static const unsigned i2c1_muxvals[] = {0, 0}; 566static const int i2c1_muxvals[] = {0, 0};
530static const unsigned i2c2_pins[] = {108, 109}; 567static const unsigned i2c2_pins[] = {108, 109};
531static const unsigned i2c2_muxvals[] = {2, 2}; 568static const int i2c2_muxvals[] = {2, 2};
532static const unsigned i2c3_pins[] = {108, 109}; 569static const unsigned i2c3_pins[] = {108, 109};
533static const unsigned i2c3_muxvals[] = {3, 3}; 570static const int i2c3_muxvals[] = {3, 3};
534static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159, 571static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159,
535 160, 161, 162, 163, 164}; 572 160, 161, 162, 163, 164};
536static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 573static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
537 0, 0};
538static const unsigned nand_cs1_pins[] = {22, 23}; 574static const unsigned nand_cs1_pins[] = {22, 23};
539static const unsigned nand_cs1_muxvals[] = {0, 0}; 575static const int nand_cs1_muxvals[] = {0, 0};
540static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52}; 576static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52};
541static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 577static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
578static const unsigned system_bus_pins[] = {16, 17, 18, 19, 20, 165, 166, 167,
579 168, 169, 170, 171, 172, 173};
580static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1,
581 -1, -1, -1};
582static const unsigned system_bus_cs0_pins[] = {155};
583static const int system_bus_cs0_muxvals[] = {1};
584static const unsigned system_bus_cs1_pins[] = {174};
585static const int system_bus_cs1_muxvals[] = {-1};
586static const unsigned system_bus_cs2_pins[] = {64};
587static const int system_bus_cs2_muxvals[] = {1};
588static const unsigned system_bus_cs3_pins[] = {156};
589static const int system_bus_cs3_muxvals[] = {1};
542static const unsigned uart0_pins[] = {85, 88}; 590static const unsigned uart0_pins[] = {85, 88};
543static const unsigned uart0_muxvals[] = {1, 1}; 591static const int uart0_muxvals[] = {1, 1};
544static const unsigned uart1_pins[] = {155, 156}; 592static const unsigned uart1_pins[] = {155, 156};
545static const unsigned uart1_muxvals[] = {13, 13}; 593static const int uart1_muxvals[] = {13, 13};
546static const unsigned uart1b_pins[] = {69, 70}; 594static const unsigned uart1b_pins[] = {69, 70};
547static const unsigned uart1b_muxvals[] = {23, 23}; 595static const int uart1b_muxvals[] = {23, 23};
548static const unsigned uart2_pins[] = {128, 129}; 596static const unsigned uart2_pins[] = {128, 129};
549static const unsigned uart2_muxvals[] = {13, 13}; 597static const int uart2_muxvals[] = {13, 13};
550static const unsigned uart3_pins[] = {110, 111}; 598static const unsigned uart3_pins[] = {110, 111};
551static const unsigned uart3_muxvals[] = {1, 1}; 599static const int uart3_muxvals[] = {1, 1};
552static const unsigned usb0_pins[] = {53, 54}; 600static const unsigned usb0_pins[] = {53, 54};
553static const unsigned usb0_muxvals[] = {0, 0}; 601static const int usb0_muxvals[] = {0, 0};
554static const unsigned usb1_pins[] = {55, 56}; 602static const unsigned usb1_pins[] = {55, 56};
555static const unsigned usb1_muxvals[] = {0, 0}; 603static const int usb1_muxvals[] = {0, 0};
556static const unsigned usb2_pins[] = {155, 156}; 604static const unsigned usb2_pins[] = {155, 156};
557static const unsigned usb2_muxvals[] = {4, 4}; 605static const int usb2_muxvals[] = {4, 4};
558static const unsigned usb2b_pins[] = {67, 68}; 606static const unsigned usb2b_pins[] = {67, 68};
559static const unsigned usb2b_muxvals[] = {23, 23}; 607static const int usb2b_muxvals[] = {23, 23};
560static const unsigned port_range0_pins[] = { 608static const unsigned port_range0_pins[] = {
561 135, 136, 137, 138, 139, 140, 141, 142, /* PORT0x */ 609 135, 136, 137, 138, 139, 140, 141, 142, /* PORT0x */
562 143, 144, 145, 146, 147, 148, 149, 150, /* PORT1x */ 610 143, 144, 145, 146, 147, 148, 149, 150, /* PORT1x */
@@ -574,7 +622,7 @@ static const unsigned port_range0_pins[] = {
574 98, 99, 100, 6, 101, 114, 115, 116, /* PORT13x */ 622 98, 99, 100, 6, 101, 114, 115, 116, /* PORT13x */
575 103, 108, 21, 22, 23, 117, 118, 119, /* PORT14x */ 623 103, 108, 21, 22, 23, 117, 118, 119, /* PORT14x */
576}; 624};
577static const unsigned port_range0_muxvals[] = { 625static const int port_range0_muxvals[] = {
578 0, 0, 0, 0, 0, 0, 0, 0, /* PORT0x */ 626 0, 0, 0, 0, 0, 0, 0, 0, /* PORT0x */
579 0, 0, 0, 0, 0, 0, 0, 0, /* PORT1x */ 627 0, 0, 0, 0, 0, 0, 0, 0, /* PORT1x */
580 0, 0, 0, 0, 0, 0, 0, 15, /* PORT2x */ 628 0, 0, 0, 0, 0, 0, 0, 15, /* PORT2x */
@@ -594,27 +642,29 @@ static const unsigned port_range0_muxvals[] = {
594static const unsigned port_range1_pins[] = { 642static const unsigned port_range1_pins[] = {
595 7, /* PORT166 */ 643 7, /* PORT166 */
596}; 644};
597static const unsigned port_range1_muxvals[] = { 645static const int port_range1_muxvals[] = {
598 15, /* PORT166 */ 646 15, /* PORT166 */
599}; 647};
600static const unsigned xirq_range0_pins[] = { 648static const unsigned xirq_range0_pins[] = {
601 151, 123, 124, 125, 126, 127, 128, 129, /* XIRQ0-7 */ 649 151, 123, 124, 125, 126, 127, 128, 129, /* XIRQ0-7 */
602 130, 131, 132, 133, 62, /* XIRQ8-12 */ 650 130, 131, 132, 133, 62, /* XIRQ8-12 */
603}; 651};
604static const unsigned xirq_range0_muxvals[] = { 652static const int xirq_range0_muxvals[] = {
605 14, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */ 653 14, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */
606 0, 0, 0, 0, 14, /* XIRQ8-12 */ 654 0, 0, 0, 0, 14, /* XIRQ8-12 */
607}; 655};
608static const unsigned xirq_range1_pins[] = { 656static const unsigned xirq_range1_pins[] = {
609 134, 63, /* XIRQ14-15 */ 657 134, 63, /* XIRQ14-15 */
610}; 658};
611static const unsigned xirq_range1_muxvals[] = { 659static const int xirq_range1_muxvals[] = {
612 0, 14, /* XIRQ14-15 */ 660 0, 14, /* XIRQ14-15 */
613}; 661};
614 662
615static const struct uniphier_pinctrl_group ph1_ld4_groups[] = { 663static const struct uniphier_pinctrl_group uniphier_ld4_groups[] = {
616 UNIPHIER_PINCTRL_GROUP(emmc), 664 UNIPHIER_PINCTRL_GROUP(emmc),
617 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 665 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
666 UNIPHIER_PINCTRL_GROUP(ether_mii),
667 UNIPHIER_PINCTRL_GROUP(ether_rmii),
618 UNIPHIER_PINCTRL_GROUP(i2c0), 668 UNIPHIER_PINCTRL_GROUP(i2c0),
619 UNIPHIER_PINCTRL_GROUP(i2c1), 669 UNIPHIER_PINCTRL_GROUP(i2c1),
620 UNIPHIER_PINCTRL_GROUP(i2c2), 670 UNIPHIER_PINCTRL_GROUP(i2c2),
@@ -622,6 +672,11 @@ static const struct uniphier_pinctrl_group ph1_ld4_groups[] = {
622 UNIPHIER_PINCTRL_GROUP(nand), 672 UNIPHIER_PINCTRL_GROUP(nand),
623 UNIPHIER_PINCTRL_GROUP(nand_cs1), 673 UNIPHIER_PINCTRL_GROUP(nand_cs1),
624 UNIPHIER_PINCTRL_GROUP(sd), 674 UNIPHIER_PINCTRL_GROUP(sd),
675 UNIPHIER_PINCTRL_GROUP(system_bus),
676 UNIPHIER_PINCTRL_GROUP(system_bus_cs0),
677 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
678 UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
679 UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
625 UNIPHIER_PINCTRL_GROUP(uart0), 680 UNIPHIER_PINCTRL_GROUP(uart0),
626 UNIPHIER_PINCTRL_GROUP(uart1), 681 UNIPHIER_PINCTRL_GROUP(uart1),
627 UNIPHIER_PINCTRL_GROUP(uart1b), 682 UNIPHIER_PINCTRL_GROUP(uart1b),
@@ -774,12 +829,19 @@ static const struct uniphier_pinctrl_group ph1_ld4_groups[] = {
774}; 829};
775 830
776static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 831static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
832static const char * const ether_mii_groups[] = {"ether_mii"};
833static const char * const ether_rmii_groups[] = {"ether_rmii"};
777static const char * const i2c0_groups[] = {"i2c0"}; 834static const char * const i2c0_groups[] = {"i2c0"};
778static const char * const i2c1_groups[] = {"i2c1"}; 835static const char * const i2c1_groups[] = {"i2c1"};
779static const char * const i2c2_groups[] = {"i2c2"}; 836static const char * const i2c2_groups[] = {"i2c2"};
780static const char * const i2c3_groups[] = {"i2c3"}; 837static const char * const i2c3_groups[] = {"i2c3"};
781static const char * const nand_groups[] = {"nand", "nand_cs1"}; 838static const char * const nand_groups[] = {"nand", "nand_cs1"};
782static const char * const sd_groups[] = {"sd"}; 839static const char * const sd_groups[] = {"sd"};
840static const char * const system_bus_groups[] = {"system_bus",
841 "system_bus_cs0",
842 "system_bus_cs1",
843 "system_bus_cs2",
844 "system_bus_cs3"};
783static const char * const uart0_groups[] = {"uart0"}; 845static const char * const uart0_groups[] = {"uart0"};
784static const char * const uart1_groups[] = {"uart1", "uart1b"}; 846static const char * const uart1_groups[] = {"uart1", "uart1b"};
785static const char * const uart2_groups[] = {"uart2"}; 847static const char * const uart2_groups[] = {"uart2"};
@@ -828,14 +890,17 @@ static const char * const xirq_groups[] = {
828 "xirq12", /* none*/ "xirq14", "xirq15", 890 "xirq12", /* none*/ "xirq14", "xirq15",
829}; 891};
830 892
831static const struct uniphier_pinmux_function ph1_ld4_functions[] = { 893static const struct uniphier_pinmux_function uniphier_ld4_functions[] = {
832 UNIPHIER_PINMUX_FUNCTION(emmc), 894 UNIPHIER_PINMUX_FUNCTION(emmc),
895 UNIPHIER_PINMUX_FUNCTION(ether_mii),
896 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
833 UNIPHIER_PINMUX_FUNCTION(i2c0), 897 UNIPHIER_PINMUX_FUNCTION(i2c0),
834 UNIPHIER_PINMUX_FUNCTION(i2c1), 898 UNIPHIER_PINMUX_FUNCTION(i2c1),
835 UNIPHIER_PINMUX_FUNCTION(i2c2), 899 UNIPHIER_PINMUX_FUNCTION(i2c2),
836 UNIPHIER_PINMUX_FUNCTION(i2c3), 900 UNIPHIER_PINMUX_FUNCTION(i2c3),
837 UNIPHIER_PINMUX_FUNCTION(nand), 901 UNIPHIER_PINMUX_FUNCTION(nand),
838 UNIPHIER_PINMUX_FUNCTION(sd), 902 UNIPHIER_PINMUX_FUNCTION(sd),
903 UNIPHIER_PINMUX_FUNCTION(system_bus),
839 UNIPHIER_PINMUX_FUNCTION(uart0), 904 UNIPHIER_PINMUX_FUNCTION(uart0),
840 UNIPHIER_PINMUX_FUNCTION(uart1), 905 UNIPHIER_PINMUX_FUNCTION(uart1),
841 UNIPHIER_PINMUX_FUNCTION(uart2), 906 UNIPHIER_PINMUX_FUNCTION(uart2),
@@ -847,43 +912,36 @@ static const struct uniphier_pinmux_function ph1_ld4_functions[] = {
847 UNIPHIER_PINMUX_FUNCTION(xirq), 912 UNIPHIER_PINMUX_FUNCTION(xirq),
848}; 913};
849 914
850static struct uniphier_pinctrl_socdata ph1_ld4_pindata = { 915static struct uniphier_pinctrl_socdata uniphier_ld4_pindata = {
851 .groups = ph1_ld4_groups, 916 .pins = uniphier_ld4_pins,
852 .groups_count = ARRAY_SIZE(ph1_ld4_groups), 917 .npins = ARRAY_SIZE(uniphier_ld4_pins),
853 .functions = ph1_ld4_functions, 918 .groups = uniphier_ld4_groups,
854 .functions_count = ARRAY_SIZE(ph1_ld4_functions), 919 .groups_count = ARRAY_SIZE(uniphier_ld4_groups),
855 .mux_bits = 8, 920 .functions = uniphier_ld4_functions,
856 .reg_stride = 4, 921 .functions_count = ARRAY_SIZE(uniphier_ld4_functions),
857 .load_pinctrl = false, 922 .caps = 0,
858};
859
860static struct pinctrl_desc ph1_ld4_pinctrl_desc = {
861 .name = DRIVER_NAME,
862 .pins = ph1_ld4_pins,
863 .npins = ARRAY_SIZE(ph1_ld4_pins),
864 .owner = THIS_MODULE,
865}; 923};
866 924
867static int ph1_ld4_pinctrl_probe(struct platform_device *pdev) 925static int uniphier_ld4_pinctrl_probe(struct platform_device *pdev)
868{ 926{
869 return uniphier_pinctrl_probe(pdev, &ph1_ld4_pinctrl_desc, 927 return uniphier_pinctrl_probe(pdev, &uniphier_ld4_pindata);
870 &ph1_ld4_pindata);
871} 928}
872 929
873static const struct of_device_id ph1_ld4_pinctrl_match[] = { 930static const struct of_device_id uniphier_ld4_pinctrl_match[] = {
931 { .compatible = "socionext,uniphier-ld4-pinctrl" },
874 { .compatible = "socionext,ph1-ld4-pinctrl" }, 932 { .compatible = "socionext,ph1-ld4-pinctrl" },
875 { /* sentinel */ } 933 { /* sentinel */ }
876}; 934};
877MODULE_DEVICE_TABLE(of, ph1_ld4_pinctrl_match); 935MODULE_DEVICE_TABLE(of, uniphier_ld4_pinctrl_match);
878 936
879static struct platform_driver ph1_ld4_pinctrl_driver = { 937static struct platform_driver uniphier_ld4_pinctrl_driver = {
880 .probe = ph1_ld4_pinctrl_probe, 938 .probe = uniphier_ld4_pinctrl_probe,
881 .driver = { 939 .driver = {
882 .name = DRIVER_NAME, 940 .name = "uniphier-ld4-pinctrl",
883 .of_match_table = ph1_ld4_pinctrl_match, 941 .of_match_table = uniphier_ld4_pinctrl_match,
884 }, 942 },
885}; 943};
886module_platform_driver(ph1_ld4_pinctrl_driver); 944module_platform_driver(uniphier_ld4_pinctrl_driver);
887 945
888MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 946MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
889MODULE_DESCRIPTION("UniPhier PH1-LD4 pinctrl driver"); 947MODULE_DESCRIPTION("UniPhier PH1-LD4 pinctrl driver");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c
index 150d33928df2..708e5100cf34 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c
@@ -19,713 +19,711 @@
19 19
20#include "pinctrl-uniphier.h" 20#include "pinctrl-uniphier.h"
21 21
22#define DRIVER_NAME "ph1-ld6b-pinctrl" 22static const struct pinctrl_pin_desc uniphier_ld6b_pins[] = {
23
24static const struct pinctrl_pin_desc ph1_ld6b_pins[] = {
25 UNIPHIER_PINCTRL_PIN(0, "ED0", UNIPHIER_PIN_IECTRL_NONE, 23 UNIPHIER_PINCTRL_PIN(0, "ED0", UNIPHIER_PIN_IECTRL_NONE,
26 0, UNIPHIER_PIN_DRV_4_8, 24 0, UNIPHIER_PIN_DRV_1BIT,
27 0, UNIPHIER_PIN_PULL_DOWN), 25 0, UNIPHIER_PIN_PULL_DOWN),
28 UNIPHIER_PINCTRL_PIN(1, "ED1", UNIPHIER_PIN_IECTRL_NONE, 26 UNIPHIER_PINCTRL_PIN(1, "ED1", UNIPHIER_PIN_IECTRL_NONE,
29 1, UNIPHIER_PIN_DRV_4_8, 27 1, UNIPHIER_PIN_DRV_1BIT,
30 1, UNIPHIER_PIN_PULL_DOWN), 28 1, UNIPHIER_PIN_PULL_DOWN),
31 UNIPHIER_PINCTRL_PIN(2, "ED2", UNIPHIER_PIN_IECTRL_NONE, 29 UNIPHIER_PINCTRL_PIN(2, "ED2", UNIPHIER_PIN_IECTRL_NONE,
32 2, UNIPHIER_PIN_DRV_4_8, 30 2, UNIPHIER_PIN_DRV_1BIT,
33 2, UNIPHIER_PIN_PULL_DOWN), 31 2, UNIPHIER_PIN_PULL_DOWN),
34 UNIPHIER_PINCTRL_PIN(3, "ED3", UNIPHIER_PIN_IECTRL_NONE, 32 UNIPHIER_PINCTRL_PIN(3, "ED3", UNIPHIER_PIN_IECTRL_NONE,
35 3, UNIPHIER_PIN_DRV_4_8, 33 3, UNIPHIER_PIN_DRV_1BIT,
36 3, UNIPHIER_PIN_PULL_DOWN), 34 3, UNIPHIER_PIN_PULL_DOWN),
37 UNIPHIER_PINCTRL_PIN(4, "ED4", UNIPHIER_PIN_IECTRL_NONE, 35 UNIPHIER_PINCTRL_PIN(4, "ED4", UNIPHIER_PIN_IECTRL_NONE,
38 4, UNIPHIER_PIN_DRV_4_8, 36 4, UNIPHIER_PIN_DRV_1BIT,
39 4, UNIPHIER_PIN_PULL_DOWN), 37 4, UNIPHIER_PIN_PULL_DOWN),
40 UNIPHIER_PINCTRL_PIN(5, "ED5", UNIPHIER_PIN_IECTRL_NONE, 38 UNIPHIER_PINCTRL_PIN(5, "ED5", UNIPHIER_PIN_IECTRL_NONE,
41 5, UNIPHIER_PIN_DRV_4_8, 39 5, UNIPHIER_PIN_DRV_1BIT,
42 5, UNIPHIER_PIN_PULL_DOWN), 40 5, UNIPHIER_PIN_PULL_DOWN),
43 UNIPHIER_PINCTRL_PIN(6, "ED6", UNIPHIER_PIN_IECTRL_NONE, 41 UNIPHIER_PINCTRL_PIN(6, "ED6", UNIPHIER_PIN_IECTRL_NONE,
44 6, UNIPHIER_PIN_DRV_4_8, 42 6, UNIPHIER_PIN_DRV_1BIT,
45 6, UNIPHIER_PIN_PULL_DOWN), 43 6, UNIPHIER_PIN_PULL_DOWN),
46 UNIPHIER_PINCTRL_PIN(7, "ED7", UNIPHIER_PIN_IECTRL_NONE, 44 UNIPHIER_PINCTRL_PIN(7, "ED7", UNIPHIER_PIN_IECTRL_NONE,
47 7, UNIPHIER_PIN_DRV_4_8, 45 7, UNIPHIER_PIN_DRV_1BIT,
48 7, UNIPHIER_PIN_PULL_DOWN), 46 7, UNIPHIER_PIN_PULL_DOWN),
49 UNIPHIER_PINCTRL_PIN(8, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 47 UNIPHIER_PINCTRL_PIN(8, "XERWE0", UNIPHIER_PIN_IECTRL_NONE,
50 8, UNIPHIER_PIN_DRV_4_8, 48 8, UNIPHIER_PIN_DRV_1BIT,
51 8, UNIPHIER_PIN_PULL_DOWN), 49 8, UNIPHIER_PIN_PULL_DOWN),
52 UNIPHIER_PINCTRL_PIN(9, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 50 UNIPHIER_PINCTRL_PIN(9, "XERWE1", UNIPHIER_PIN_IECTRL_NONE,
53 9, UNIPHIER_PIN_DRV_4_8, 51 9, UNIPHIER_PIN_DRV_1BIT,
54 9, UNIPHIER_PIN_PULL_DOWN), 52 9, UNIPHIER_PIN_PULL_DOWN),
55 UNIPHIER_PINCTRL_PIN(10, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 53 UNIPHIER_PINCTRL_PIN(10, "ERXW", UNIPHIER_PIN_IECTRL_NONE,
56 10, UNIPHIER_PIN_DRV_4_8, 54 10, UNIPHIER_PIN_DRV_1BIT,
57 10, UNIPHIER_PIN_PULL_DOWN), 55 10, UNIPHIER_PIN_PULL_DOWN),
58 UNIPHIER_PINCTRL_PIN(11, "ES0", UNIPHIER_PIN_IECTRL_NONE, 56 UNIPHIER_PINCTRL_PIN(11, "ES0", UNIPHIER_PIN_IECTRL_NONE,
59 11, UNIPHIER_PIN_DRV_4_8, 57 11, UNIPHIER_PIN_DRV_1BIT,
60 11, UNIPHIER_PIN_PULL_DOWN), 58 11, UNIPHIER_PIN_PULL_DOWN),
61 UNIPHIER_PINCTRL_PIN(12, "ES1", UNIPHIER_PIN_IECTRL_NONE, 59 UNIPHIER_PINCTRL_PIN(12, "ES1", UNIPHIER_PIN_IECTRL_NONE,
62 12, UNIPHIER_PIN_DRV_4_8, 60 12, UNIPHIER_PIN_DRV_1BIT,
63 12, UNIPHIER_PIN_PULL_DOWN), 61 12, UNIPHIER_PIN_PULL_DOWN),
64 UNIPHIER_PINCTRL_PIN(13, "ES2", UNIPHIER_PIN_IECTRL_NONE, 62 UNIPHIER_PINCTRL_PIN(13, "ES2", UNIPHIER_PIN_IECTRL_NONE,
65 13, UNIPHIER_PIN_DRV_4_8, 63 13, UNIPHIER_PIN_DRV_1BIT,
66 13, UNIPHIER_PIN_PULL_DOWN), 64 13, UNIPHIER_PIN_PULL_DOWN),
67 UNIPHIER_PINCTRL_PIN(14, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 65 UNIPHIER_PINCTRL_PIN(14, "XECS1", UNIPHIER_PIN_IECTRL_NONE,
68 14, UNIPHIER_PIN_DRV_4_8, 66 14, UNIPHIER_PIN_DRV_1BIT,
69 14, UNIPHIER_PIN_PULL_DOWN), 67 14, UNIPHIER_PIN_PULL_DOWN),
70 UNIPHIER_PINCTRL_PIN(15, "PCA00", UNIPHIER_PIN_IECTRL_NONE, 68 UNIPHIER_PINCTRL_PIN(15, "PCA00", UNIPHIER_PIN_IECTRL_NONE,
71 -1, UNIPHIER_PIN_DRV_FIXED_8, 69 -1, UNIPHIER_PIN_DRV_FIXED8,
72 15, UNIPHIER_PIN_PULL_DOWN), 70 15, UNIPHIER_PIN_PULL_DOWN),
73 UNIPHIER_PINCTRL_PIN(16, "PCA01", UNIPHIER_PIN_IECTRL_NONE, 71 UNIPHIER_PINCTRL_PIN(16, "PCA01", UNIPHIER_PIN_IECTRL_NONE,
74 -1, UNIPHIER_PIN_DRV_FIXED_8, 72 -1, UNIPHIER_PIN_DRV_FIXED8,
75 16, UNIPHIER_PIN_PULL_DOWN), 73 16, UNIPHIER_PIN_PULL_DOWN),
76 UNIPHIER_PINCTRL_PIN(17, "PCA02", UNIPHIER_PIN_IECTRL_NONE, 74 UNIPHIER_PINCTRL_PIN(17, "PCA02", UNIPHIER_PIN_IECTRL_NONE,
77 -1, UNIPHIER_PIN_DRV_FIXED_8, 75 -1, UNIPHIER_PIN_DRV_FIXED8,
78 17, UNIPHIER_PIN_PULL_DOWN), 76 17, UNIPHIER_PIN_PULL_DOWN),
79 UNIPHIER_PINCTRL_PIN(18, "PCA03", UNIPHIER_PIN_IECTRL_NONE, 77 UNIPHIER_PINCTRL_PIN(18, "PCA03", UNIPHIER_PIN_IECTRL_NONE,
80 -1, UNIPHIER_PIN_DRV_FIXED_8, 78 -1, UNIPHIER_PIN_DRV_FIXED8,
81 18, UNIPHIER_PIN_PULL_DOWN), 79 18, UNIPHIER_PIN_PULL_DOWN),
82 UNIPHIER_PINCTRL_PIN(19, "PCA04", UNIPHIER_PIN_IECTRL_NONE, 80 UNIPHIER_PINCTRL_PIN(19, "PCA04", UNIPHIER_PIN_IECTRL_NONE,
83 -1, UNIPHIER_PIN_DRV_FIXED_8, 81 -1, UNIPHIER_PIN_DRV_FIXED8,
84 19, UNIPHIER_PIN_PULL_DOWN), 82 19, UNIPHIER_PIN_PULL_DOWN),
85 UNIPHIER_PINCTRL_PIN(20, "PCA05", UNIPHIER_PIN_IECTRL_NONE, 83 UNIPHIER_PINCTRL_PIN(20, "PCA05", UNIPHIER_PIN_IECTRL_NONE,
86 -1, UNIPHIER_PIN_DRV_FIXED_8, 84 -1, UNIPHIER_PIN_DRV_FIXED8,
87 20, UNIPHIER_PIN_PULL_DOWN), 85 20, UNIPHIER_PIN_PULL_DOWN),
88 UNIPHIER_PINCTRL_PIN(21, "PCA06", UNIPHIER_PIN_IECTRL_NONE, 86 UNIPHIER_PINCTRL_PIN(21, "PCA06", UNIPHIER_PIN_IECTRL_NONE,
89 -1, UNIPHIER_PIN_DRV_FIXED_8, 87 -1, UNIPHIER_PIN_DRV_FIXED8,
90 21, UNIPHIER_PIN_PULL_DOWN), 88 21, UNIPHIER_PIN_PULL_DOWN),
91 UNIPHIER_PINCTRL_PIN(22, "PCA07", UNIPHIER_PIN_IECTRL_NONE, 89 UNIPHIER_PINCTRL_PIN(22, "PCA07", UNIPHIER_PIN_IECTRL_NONE,
92 -1, UNIPHIER_PIN_DRV_FIXED_8, 90 -1, UNIPHIER_PIN_DRV_FIXED8,
93 22, UNIPHIER_PIN_PULL_DOWN), 91 22, UNIPHIER_PIN_PULL_DOWN),
94 UNIPHIER_PINCTRL_PIN(23, "PCA08", UNIPHIER_PIN_IECTRL_NONE, 92 UNIPHIER_PINCTRL_PIN(23, "PCA08", UNIPHIER_PIN_IECTRL_NONE,
95 -1, UNIPHIER_PIN_DRV_FIXED_8, 93 -1, UNIPHIER_PIN_DRV_FIXED8,
96 23, UNIPHIER_PIN_PULL_DOWN), 94 23, UNIPHIER_PIN_PULL_DOWN),
97 UNIPHIER_PINCTRL_PIN(24, "PCA09", UNIPHIER_PIN_IECTRL_NONE, 95 UNIPHIER_PINCTRL_PIN(24, "PCA09", UNIPHIER_PIN_IECTRL_NONE,
98 -1, UNIPHIER_PIN_DRV_FIXED_8, 96 -1, UNIPHIER_PIN_DRV_FIXED8,
99 24, UNIPHIER_PIN_PULL_DOWN), 97 24, UNIPHIER_PIN_PULL_DOWN),
100 UNIPHIER_PINCTRL_PIN(25, "PCA10", UNIPHIER_PIN_IECTRL_NONE, 98 UNIPHIER_PINCTRL_PIN(25, "PCA10", UNIPHIER_PIN_IECTRL_NONE,
101 -1, UNIPHIER_PIN_DRV_FIXED_8, 99 -1, UNIPHIER_PIN_DRV_FIXED8,
102 25, UNIPHIER_PIN_PULL_DOWN), 100 25, UNIPHIER_PIN_PULL_DOWN),
103 UNIPHIER_PINCTRL_PIN(26, "PCA11", UNIPHIER_PIN_IECTRL_NONE, 101 UNIPHIER_PINCTRL_PIN(26, "PCA11", UNIPHIER_PIN_IECTRL_NONE,
104 -1, UNIPHIER_PIN_DRV_FIXED_8, 102 -1, UNIPHIER_PIN_DRV_FIXED8,
105 26, UNIPHIER_PIN_PULL_DOWN), 103 26, UNIPHIER_PIN_PULL_DOWN),
106 UNIPHIER_PINCTRL_PIN(27, "PCA12", UNIPHIER_PIN_IECTRL_NONE, 104 UNIPHIER_PINCTRL_PIN(27, "PCA12", UNIPHIER_PIN_IECTRL_NONE,
107 -1, UNIPHIER_PIN_DRV_FIXED_8, 105 -1, UNIPHIER_PIN_DRV_FIXED8,
108 27, UNIPHIER_PIN_PULL_DOWN), 106 27, UNIPHIER_PIN_PULL_DOWN),
109 UNIPHIER_PINCTRL_PIN(28, "PCA13", UNIPHIER_PIN_IECTRL_NONE, 107 UNIPHIER_PINCTRL_PIN(28, "PCA13", UNIPHIER_PIN_IECTRL_NONE,
110 -1, UNIPHIER_PIN_DRV_FIXED_8, 108 -1, UNIPHIER_PIN_DRV_FIXED8,
111 28, UNIPHIER_PIN_PULL_DOWN), 109 28, UNIPHIER_PIN_PULL_DOWN),
112 UNIPHIER_PINCTRL_PIN(29, "PCA14", UNIPHIER_PIN_IECTRL_NONE, 110 UNIPHIER_PINCTRL_PIN(29, "PCA14", UNIPHIER_PIN_IECTRL_NONE,
113 -1, UNIPHIER_PIN_DRV_FIXED_8, 111 -1, UNIPHIER_PIN_DRV_FIXED8,
114 29, UNIPHIER_PIN_PULL_DOWN), 112 29, UNIPHIER_PIN_PULL_DOWN),
115 UNIPHIER_PINCTRL_PIN(30, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 113 UNIPHIER_PINCTRL_PIN(30, "XNFRE", UNIPHIER_PIN_IECTRL_NONE,
116 30, UNIPHIER_PIN_DRV_4_8, 114 30, UNIPHIER_PIN_DRV_1BIT,
117 30, UNIPHIER_PIN_PULL_UP), 115 30, UNIPHIER_PIN_PULL_UP),
118 UNIPHIER_PINCTRL_PIN(31, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 116 UNIPHIER_PINCTRL_PIN(31, "XNFWE", UNIPHIER_PIN_IECTRL_NONE,
119 31, UNIPHIER_PIN_DRV_4_8, 117 31, UNIPHIER_PIN_DRV_1BIT,
120 31, UNIPHIER_PIN_PULL_UP), 118 31, UNIPHIER_PIN_PULL_UP),
121 UNIPHIER_PINCTRL_PIN(32, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 119 UNIPHIER_PINCTRL_PIN(32, "NFALE", UNIPHIER_PIN_IECTRL_NONE,
122 32, UNIPHIER_PIN_DRV_4_8, 120 32, UNIPHIER_PIN_DRV_1BIT,
123 32, UNIPHIER_PIN_PULL_DOWN), 121 32, UNIPHIER_PIN_PULL_DOWN),
124 UNIPHIER_PINCTRL_PIN(33, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 122 UNIPHIER_PINCTRL_PIN(33, "NFCLE", UNIPHIER_PIN_IECTRL_NONE,
125 33, UNIPHIER_PIN_DRV_4_8, 123 33, UNIPHIER_PIN_DRV_1BIT,
126 33, UNIPHIER_PIN_PULL_DOWN), 124 33, UNIPHIER_PIN_PULL_DOWN),
127 UNIPHIER_PINCTRL_PIN(34, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 125 UNIPHIER_PINCTRL_PIN(34, "XNFWP", UNIPHIER_PIN_IECTRL_NONE,
128 34, UNIPHIER_PIN_DRV_4_8, 126 34, UNIPHIER_PIN_DRV_1BIT,
129 34, UNIPHIER_PIN_PULL_DOWN), 127 34, UNIPHIER_PIN_PULL_DOWN),
130 UNIPHIER_PINCTRL_PIN(35, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 128 UNIPHIER_PINCTRL_PIN(35, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE,
131 35, UNIPHIER_PIN_DRV_4_8, 129 35, UNIPHIER_PIN_DRV_1BIT,
132 35, UNIPHIER_PIN_PULL_UP), 130 35, UNIPHIER_PIN_PULL_UP),
133 UNIPHIER_PINCTRL_PIN(36, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE, 131 UNIPHIER_PINCTRL_PIN(36, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE,
134 36, UNIPHIER_PIN_DRV_4_8, 132 36, UNIPHIER_PIN_DRV_1BIT,
135 36, UNIPHIER_PIN_PULL_UP), 133 36, UNIPHIER_PIN_PULL_UP),
136 UNIPHIER_PINCTRL_PIN(37, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE, 134 UNIPHIER_PINCTRL_PIN(37, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE,
137 37, UNIPHIER_PIN_DRV_4_8, 135 37, UNIPHIER_PIN_DRV_1BIT,
138 37, UNIPHIER_PIN_PULL_UP), 136 37, UNIPHIER_PIN_PULL_UP),
139 UNIPHIER_PINCTRL_PIN(38, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE, 137 UNIPHIER_PINCTRL_PIN(38, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE,
140 38, UNIPHIER_PIN_DRV_4_8, 138 38, UNIPHIER_PIN_DRV_1BIT,
141 38, UNIPHIER_PIN_PULL_UP), 139 38, UNIPHIER_PIN_PULL_UP),
142 UNIPHIER_PINCTRL_PIN(39, "NFD0", UNIPHIER_PIN_IECTRL_NONE, 140 UNIPHIER_PINCTRL_PIN(39, "NFD0", UNIPHIER_PIN_IECTRL_NONE,
143 39, UNIPHIER_PIN_DRV_4_8, 141 39, UNIPHIER_PIN_DRV_1BIT,
144 39, UNIPHIER_PIN_PULL_DOWN), 142 39, UNIPHIER_PIN_PULL_DOWN),
145 UNIPHIER_PINCTRL_PIN(40, "NFD1", UNIPHIER_PIN_IECTRL_NONE, 143 UNIPHIER_PINCTRL_PIN(40, "NFD1", UNIPHIER_PIN_IECTRL_NONE,
146 40, UNIPHIER_PIN_DRV_4_8, 144 40, UNIPHIER_PIN_DRV_1BIT,
147 40, UNIPHIER_PIN_PULL_DOWN), 145 40, UNIPHIER_PIN_PULL_DOWN),
148 UNIPHIER_PINCTRL_PIN(41, "NFD2", UNIPHIER_PIN_IECTRL_NONE, 146 UNIPHIER_PINCTRL_PIN(41, "NFD2", UNIPHIER_PIN_IECTRL_NONE,
149 41, UNIPHIER_PIN_DRV_4_8, 147 41, UNIPHIER_PIN_DRV_1BIT,
150 41, UNIPHIER_PIN_PULL_DOWN), 148 41, UNIPHIER_PIN_PULL_DOWN),
151 UNIPHIER_PINCTRL_PIN(42, "NFD3", UNIPHIER_PIN_IECTRL_NONE, 149 UNIPHIER_PINCTRL_PIN(42, "NFD3", UNIPHIER_PIN_IECTRL_NONE,
152 42, UNIPHIER_PIN_DRV_4_8, 150 42, UNIPHIER_PIN_DRV_1BIT,
153 42, UNIPHIER_PIN_PULL_DOWN), 151 42, UNIPHIER_PIN_PULL_DOWN),
154 UNIPHIER_PINCTRL_PIN(43, "NFD4", UNIPHIER_PIN_IECTRL_NONE, 152 UNIPHIER_PINCTRL_PIN(43, "NFD4", UNIPHIER_PIN_IECTRL_NONE,
155 43, UNIPHIER_PIN_DRV_4_8, 153 43, UNIPHIER_PIN_DRV_1BIT,
156 43, UNIPHIER_PIN_PULL_DOWN), 154 43, UNIPHIER_PIN_PULL_DOWN),
157 UNIPHIER_PINCTRL_PIN(44, "NFD5", UNIPHIER_PIN_IECTRL_NONE, 155 UNIPHIER_PINCTRL_PIN(44, "NFD5", UNIPHIER_PIN_IECTRL_NONE,
158 44, UNIPHIER_PIN_DRV_4_8, 156 44, UNIPHIER_PIN_DRV_1BIT,
159 44, UNIPHIER_PIN_PULL_DOWN), 157 44, UNIPHIER_PIN_PULL_DOWN),
160 UNIPHIER_PINCTRL_PIN(45, "NFD6", UNIPHIER_PIN_IECTRL_NONE, 158 UNIPHIER_PINCTRL_PIN(45, "NFD6", UNIPHIER_PIN_IECTRL_NONE,
161 45, UNIPHIER_PIN_DRV_4_8, 159 45, UNIPHIER_PIN_DRV_1BIT,
162 45, UNIPHIER_PIN_PULL_DOWN), 160 45, UNIPHIER_PIN_PULL_DOWN),
163 UNIPHIER_PINCTRL_PIN(46, "NFD7", UNIPHIER_PIN_IECTRL_NONE, 161 UNIPHIER_PINCTRL_PIN(46, "NFD7", UNIPHIER_PIN_IECTRL_NONE,
164 46, UNIPHIER_PIN_DRV_4_8, 162 46, UNIPHIER_PIN_DRV_1BIT,
165 46, UNIPHIER_PIN_PULL_DOWN), 163 46, UNIPHIER_PIN_PULL_DOWN),
166 UNIPHIER_PINCTRL_PIN(47, "SDCLK", UNIPHIER_PIN_IECTRL_NONE, 164 UNIPHIER_PINCTRL_PIN(47, "SDCLK", UNIPHIER_PIN_IECTRL_NONE,
167 0, UNIPHIER_PIN_DRV_8_12_16_20, 165 0, UNIPHIER_PIN_DRV_2BIT,
168 -1, UNIPHIER_PIN_PULL_UP_FIXED), 166 -1, UNIPHIER_PIN_PULL_UP_FIXED),
169 UNIPHIER_PINCTRL_PIN(48, "SDCMD", UNIPHIER_PIN_IECTRL_NONE, 167 UNIPHIER_PINCTRL_PIN(48, "SDCMD", UNIPHIER_PIN_IECTRL_NONE,
170 4, UNIPHIER_PIN_DRV_8_12_16_20, 168 1, UNIPHIER_PIN_DRV_2BIT,
171 -1, UNIPHIER_PIN_PULL_UP_FIXED), 169 -1, UNIPHIER_PIN_PULL_UP_FIXED),
172 UNIPHIER_PINCTRL_PIN(49, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE, 170 UNIPHIER_PINCTRL_PIN(49, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE,
173 8, UNIPHIER_PIN_DRV_8_12_16_20, 171 2, UNIPHIER_PIN_DRV_2BIT,
174 -1, UNIPHIER_PIN_PULL_UP_FIXED), 172 -1, UNIPHIER_PIN_PULL_UP_FIXED),
175 UNIPHIER_PINCTRL_PIN(50, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE, 173 UNIPHIER_PINCTRL_PIN(50, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE,
176 12, UNIPHIER_PIN_DRV_8_12_16_20, 174 3, UNIPHIER_PIN_DRV_2BIT,
177 -1, UNIPHIER_PIN_PULL_UP_FIXED), 175 -1, UNIPHIER_PIN_PULL_UP_FIXED),
178 UNIPHIER_PINCTRL_PIN(51, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE, 176 UNIPHIER_PINCTRL_PIN(51, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE,
179 16, UNIPHIER_PIN_DRV_8_12_16_20, 177 4, UNIPHIER_PIN_DRV_2BIT,
180 -1, UNIPHIER_PIN_PULL_UP_FIXED), 178 -1, UNIPHIER_PIN_PULL_UP_FIXED),
181 UNIPHIER_PINCTRL_PIN(52, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE, 179 UNIPHIER_PINCTRL_PIN(52, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE,
182 20, UNIPHIER_PIN_DRV_8_12_16_20, 180 5, UNIPHIER_PIN_DRV_2BIT,
183 -1, UNIPHIER_PIN_PULL_UP_FIXED), 181 -1, UNIPHIER_PIN_PULL_UP_FIXED),
184 UNIPHIER_PINCTRL_PIN(53, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 182 UNIPHIER_PINCTRL_PIN(53, "SDCD", UNIPHIER_PIN_IECTRL_NONE,
185 -1, UNIPHIER_PIN_DRV_FIXED_8, 183 -1, UNIPHIER_PIN_DRV_FIXED8,
186 53, UNIPHIER_PIN_PULL_DOWN), 184 53, UNIPHIER_PIN_PULL_DOWN),
187 UNIPHIER_PINCTRL_PIN(54, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 185 UNIPHIER_PINCTRL_PIN(54, "SDWP", UNIPHIER_PIN_IECTRL_NONE,
188 -1, UNIPHIER_PIN_DRV_FIXED_8, 186 -1, UNIPHIER_PIN_DRV_FIXED8,
189 54, UNIPHIER_PIN_PULL_DOWN), 187 54, UNIPHIER_PIN_PULL_DOWN),
190 UNIPHIER_PINCTRL_PIN(55, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 188 UNIPHIER_PINCTRL_PIN(55, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE,
191 -1, UNIPHIER_PIN_DRV_FIXED_8, 189 -1, UNIPHIER_PIN_DRV_FIXED8,
192 55, UNIPHIER_PIN_PULL_DOWN), 190 55, UNIPHIER_PIN_PULL_DOWN),
193 UNIPHIER_PINCTRL_PIN(56, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 191 UNIPHIER_PINCTRL_PIN(56, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE,
194 -1, UNIPHIER_PIN_DRV_FIXED_8, 192 -1, UNIPHIER_PIN_DRV_FIXED8,
195 56, UNIPHIER_PIN_PULL_DOWN), 193 56, UNIPHIER_PIN_PULL_DOWN),
196 UNIPHIER_PINCTRL_PIN(57, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 194 UNIPHIER_PINCTRL_PIN(57, "USB0OD", UNIPHIER_PIN_IECTRL_NONE,
197 -1, UNIPHIER_PIN_DRV_FIXED_8, 195 -1, UNIPHIER_PIN_DRV_FIXED8,
198 57, UNIPHIER_PIN_PULL_DOWN), 196 57, UNIPHIER_PIN_PULL_DOWN),
199 UNIPHIER_PINCTRL_PIN(58, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 197 UNIPHIER_PINCTRL_PIN(58, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE,
200 -1, UNIPHIER_PIN_DRV_FIXED_8, 198 -1, UNIPHIER_PIN_DRV_FIXED8,
201 58, UNIPHIER_PIN_PULL_DOWN), 199 58, UNIPHIER_PIN_PULL_DOWN),
202 UNIPHIER_PINCTRL_PIN(59, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 200 UNIPHIER_PINCTRL_PIN(59, "USB1OD", UNIPHIER_PIN_IECTRL_NONE,
203 -1, UNIPHIER_PIN_DRV_FIXED_8, 201 -1, UNIPHIER_PIN_DRV_FIXED8,
204 59, UNIPHIER_PIN_PULL_DOWN), 202 59, UNIPHIER_PIN_PULL_DOWN),
205 UNIPHIER_PINCTRL_PIN(60, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 203 UNIPHIER_PINCTRL_PIN(60, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE,
206 -1, UNIPHIER_PIN_DRV_FIXED_8, 204 -1, UNIPHIER_PIN_DRV_FIXED8,
207 60, UNIPHIER_PIN_PULL_DOWN), 205 60, UNIPHIER_PIN_PULL_DOWN),
208 UNIPHIER_PINCTRL_PIN(61, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 206 UNIPHIER_PINCTRL_PIN(61, "USB2OD", UNIPHIER_PIN_IECTRL_NONE,
209 -1, UNIPHIER_PIN_DRV_FIXED_8, 207 -1, UNIPHIER_PIN_DRV_FIXED8,
210 61, UNIPHIER_PIN_PULL_DOWN), 208 61, UNIPHIER_PIN_PULL_DOWN),
211 UNIPHIER_PINCTRL_PIN(62, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE, 209 UNIPHIER_PINCTRL_PIN(62, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE,
212 -1, UNIPHIER_PIN_DRV_FIXED_8, 210 -1, UNIPHIER_PIN_DRV_FIXED8,
213 62, UNIPHIER_PIN_PULL_DOWN), 211 62, UNIPHIER_PIN_PULL_DOWN),
214 UNIPHIER_PINCTRL_PIN(63, "USB3OD", UNIPHIER_PIN_IECTRL_NONE, 212 UNIPHIER_PINCTRL_PIN(63, "USB3OD", UNIPHIER_PIN_IECTRL_NONE,
215 -1, UNIPHIER_PIN_DRV_FIXED_8, 213 -1, UNIPHIER_PIN_DRV_FIXED8,
216 63, UNIPHIER_PIN_PULL_DOWN), 214 63, UNIPHIER_PIN_PULL_DOWN),
217 UNIPHIER_PINCTRL_PIN(64, "HS0BCLKOUT", UNIPHIER_PIN_IECTRL_NONE, 215 UNIPHIER_PINCTRL_PIN(64, "HS0BCLKOUT", UNIPHIER_PIN_IECTRL_NONE,
218 -1, UNIPHIER_PIN_DRV_FIXED_8, 216 -1, UNIPHIER_PIN_DRV_FIXED8,
219 64, UNIPHIER_PIN_PULL_DOWN), 217 64, UNIPHIER_PIN_PULL_DOWN),
220 UNIPHIER_PINCTRL_PIN(65, "HS0SYNCOUT", UNIPHIER_PIN_IECTRL_NONE, 218 UNIPHIER_PINCTRL_PIN(65, "HS0SYNCOUT", UNIPHIER_PIN_IECTRL_NONE,
221 -1, UNIPHIER_PIN_DRV_FIXED_8, 219 -1, UNIPHIER_PIN_DRV_FIXED8,
222 65, UNIPHIER_PIN_PULL_DOWN), 220 65, UNIPHIER_PIN_PULL_DOWN),
223 UNIPHIER_PINCTRL_PIN(66, "HS0VALOUT", UNIPHIER_PIN_IECTRL_NONE, 221 UNIPHIER_PINCTRL_PIN(66, "HS0VALOUT", UNIPHIER_PIN_IECTRL_NONE,
224 -1, UNIPHIER_PIN_DRV_FIXED_8, 222 -1, UNIPHIER_PIN_DRV_FIXED8,
225 66, UNIPHIER_PIN_PULL_DOWN), 223 66, UNIPHIER_PIN_PULL_DOWN),
226 UNIPHIER_PINCTRL_PIN(67, "HS0DOUT0", UNIPHIER_PIN_IECTRL_NONE, 224 UNIPHIER_PINCTRL_PIN(67, "HS0DOUT0", UNIPHIER_PIN_IECTRL_NONE,
227 -1, UNIPHIER_PIN_DRV_FIXED_8, 225 -1, UNIPHIER_PIN_DRV_FIXED8,
228 67, UNIPHIER_PIN_PULL_DOWN), 226 67, UNIPHIER_PIN_PULL_DOWN),
229 UNIPHIER_PINCTRL_PIN(68, "HS0DOUT1", UNIPHIER_PIN_IECTRL_NONE, 227 UNIPHIER_PINCTRL_PIN(68, "HS0DOUT1", UNIPHIER_PIN_IECTRL_NONE,
230 -1, UNIPHIER_PIN_DRV_FIXED_8, 228 -1, UNIPHIER_PIN_DRV_FIXED8,
231 68, UNIPHIER_PIN_PULL_DOWN), 229 68, UNIPHIER_PIN_PULL_DOWN),
232 UNIPHIER_PINCTRL_PIN(69, "HS0DOUT2", UNIPHIER_PIN_IECTRL_NONE, 230 UNIPHIER_PINCTRL_PIN(69, "HS0DOUT2", UNIPHIER_PIN_IECTRL_NONE,
233 -1, UNIPHIER_PIN_DRV_FIXED_8, 231 -1, UNIPHIER_PIN_DRV_FIXED8,
234 69, UNIPHIER_PIN_PULL_DOWN), 232 69, UNIPHIER_PIN_PULL_DOWN),
235 UNIPHIER_PINCTRL_PIN(70, "HS0DOUT3", UNIPHIER_PIN_IECTRL_NONE, 233 UNIPHIER_PINCTRL_PIN(70, "HS0DOUT3", UNIPHIER_PIN_IECTRL_NONE,
236 -1, UNIPHIER_PIN_DRV_FIXED_8, 234 -1, UNIPHIER_PIN_DRV_FIXED8,
237 70, UNIPHIER_PIN_PULL_DOWN), 235 70, UNIPHIER_PIN_PULL_DOWN),
238 UNIPHIER_PINCTRL_PIN(71, "HS0DOUT4", UNIPHIER_PIN_IECTRL_NONE, 236 UNIPHIER_PINCTRL_PIN(71, "HS0DOUT4", UNIPHIER_PIN_IECTRL_NONE,
239 -1, UNIPHIER_PIN_DRV_FIXED_8, 237 -1, UNIPHIER_PIN_DRV_FIXED8,
240 71, UNIPHIER_PIN_PULL_DOWN), 238 71, UNIPHIER_PIN_PULL_DOWN),
241 UNIPHIER_PINCTRL_PIN(72, "HS0DOUT5", UNIPHIER_PIN_IECTRL_NONE, 239 UNIPHIER_PINCTRL_PIN(72, "HS0DOUT5", UNIPHIER_PIN_IECTRL_NONE,
242 -1, UNIPHIER_PIN_DRV_FIXED_8, 240 -1, UNIPHIER_PIN_DRV_FIXED8,
243 72, UNIPHIER_PIN_PULL_DOWN), 241 72, UNIPHIER_PIN_PULL_DOWN),
244 UNIPHIER_PINCTRL_PIN(73, "HS0DOUT6", UNIPHIER_PIN_IECTRL_NONE, 242 UNIPHIER_PINCTRL_PIN(73, "HS0DOUT6", UNIPHIER_PIN_IECTRL_NONE,
245 -1, UNIPHIER_PIN_DRV_FIXED_8, 243 -1, UNIPHIER_PIN_DRV_FIXED8,
246 73, UNIPHIER_PIN_PULL_DOWN), 244 73, UNIPHIER_PIN_PULL_DOWN),
247 UNIPHIER_PINCTRL_PIN(74, "HS0DOUT7", UNIPHIER_PIN_IECTRL_NONE, 245 UNIPHIER_PINCTRL_PIN(74, "HS0DOUT7", UNIPHIER_PIN_IECTRL_NONE,
248 -1, UNIPHIER_PIN_DRV_FIXED_8, 246 -1, UNIPHIER_PIN_DRV_FIXED8,
249 74, UNIPHIER_PIN_PULL_DOWN), 247 74, UNIPHIER_PIN_PULL_DOWN),
250 UNIPHIER_PINCTRL_PIN(75, "HS1BCLKIN", UNIPHIER_PIN_IECTRL_NONE, 248 UNIPHIER_PINCTRL_PIN(75, "HS1BCLKIN", UNIPHIER_PIN_IECTRL_NONE,
251 -1, UNIPHIER_PIN_DRV_FIXED_8, 249 -1, UNIPHIER_PIN_DRV_FIXED8,
252 75, UNIPHIER_PIN_PULL_DOWN), 250 75, UNIPHIER_PIN_PULL_DOWN),
253 UNIPHIER_PINCTRL_PIN(76, "HS1SYNCIN", UNIPHIER_PIN_IECTRL_NONE, 251 UNIPHIER_PINCTRL_PIN(76, "HS1SYNCIN", UNIPHIER_PIN_IECTRL_NONE,
254 -1, UNIPHIER_PIN_DRV_FIXED_8, 252 -1, UNIPHIER_PIN_DRV_FIXED8,
255 76, UNIPHIER_PIN_PULL_DOWN), 253 76, UNIPHIER_PIN_PULL_DOWN),
256 UNIPHIER_PINCTRL_PIN(77, "HS1VALIN", UNIPHIER_PIN_IECTRL_NONE, 254 UNIPHIER_PINCTRL_PIN(77, "HS1VALIN", UNIPHIER_PIN_IECTRL_NONE,
257 -1, UNIPHIER_PIN_DRV_FIXED_8, 255 -1, UNIPHIER_PIN_DRV_FIXED8,
258 77, UNIPHIER_PIN_PULL_DOWN), 256 77, UNIPHIER_PIN_PULL_DOWN),
259 UNIPHIER_PINCTRL_PIN(78, "HS1DIN0", UNIPHIER_PIN_IECTRL_NONE, 257 UNIPHIER_PINCTRL_PIN(78, "HS1DIN0", UNIPHIER_PIN_IECTRL_NONE,
260 -1, UNIPHIER_PIN_DRV_FIXED_8, 258 -1, UNIPHIER_PIN_DRV_FIXED8,
261 78, UNIPHIER_PIN_PULL_DOWN), 259 78, UNIPHIER_PIN_PULL_DOWN),
262 UNIPHIER_PINCTRL_PIN(79, "HS1DIN1", UNIPHIER_PIN_IECTRL_NONE, 260 UNIPHIER_PINCTRL_PIN(79, "HS1DIN1", UNIPHIER_PIN_IECTRL_NONE,
263 -1, UNIPHIER_PIN_DRV_FIXED_8, 261 -1, UNIPHIER_PIN_DRV_FIXED8,
264 79, UNIPHIER_PIN_PULL_DOWN), 262 79, UNIPHIER_PIN_PULL_DOWN),
265 UNIPHIER_PINCTRL_PIN(80, "HS1DIN2", UNIPHIER_PIN_IECTRL_NONE, 263 UNIPHIER_PINCTRL_PIN(80, "HS1DIN2", UNIPHIER_PIN_IECTRL_NONE,
266 -1, UNIPHIER_PIN_DRV_FIXED_8, 264 -1, UNIPHIER_PIN_DRV_FIXED8,
267 80, UNIPHIER_PIN_PULL_DOWN), 265 80, UNIPHIER_PIN_PULL_DOWN),
268 UNIPHIER_PINCTRL_PIN(81, "HS1DIN3", UNIPHIER_PIN_IECTRL_NONE, 266 UNIPHIER_PINCTRL_PIN(81, "HS1DIN3", UNIPHIER_PIN_IECTRL_NONE,
269 -1, UNIPHIER_PIN_DRV_FIXED_8, 267 -1, UNIPHIER_PIN_DRV_FIXED8,
270 81, UNIPHIER_PIN_PULL_DOWN), 268 81, UNIPHIER_PIN_PULL_DOWN),
271 UNIPHIER_PINCTRL_PIN(82, "HS1DIN4", UNIPHIER_PIN_IECTRL_NONE, 269 UNIPHIER_PINCTRL_PIN(82, "HS1DIN4", UNIPHIER_PIN_IECTRL_NONE,
272 -1, UNIPHIER_PIN_DRV_FIXED_8, 270 -1, UNIPHIER_PIN_DRV_FIXED8,
273 82, UNIPHIER_PIN_PULL_DOWN), 271 82, UNIPHIER_PIN_PULL_DOWN),
274 UNIPHIER_PINCTRL_PIN(83, "HS1DIN5", UNIPHIER_PIN_IECTRL_NONE, 272 UNIPHIER_PINCTRL_PIN(83, "HS1DIN5", UNIPHIER_PIN_IECTRL_NONE,
275 -1, UNIPHIER_PIN_DRV_FIXED_8, 273 -1, UNIPHIER_PIN_DRV_FIXED8,
276 83, UNIPHIER_PIN_PULL_DOWN), 274 83, UNIPHIER_PIN_PULL_DOWN),
277 UNIPHIER_PINCTRL_PIN(84, "HS1DIN6", UNIPHIER_PIN_IECTRL_NONE, 275 UNIPHIER_PINCTRL_PIN(84, "HS1DIN6", UNIPHIER_PIN_IECTRL_NONE,
278 -1, UNIPHIER_PIN_DRV_FIXED_8, 276 -1, UNIPHIER_PIN_DRV_FIXED8,
279 84, UNIPHIER_PIN_PULL_DOWN), 277 84, UNIPHIER_PIN_PULL_DOWN),
280 UNIPHIER_PINCTRL_PIN(85, "HS1DIN7", UNIPHIER_PIN_IECTRL_NONE, 278 UNIPHIER_PINCTRL_PIN(85, "HS1DIN7", UNIPHIER_PIN_IECTRL_NONE,
281 -1, UNIPHIER_PIN_DRV_FIXED_8, 279 -1, UNIPHIER_PIN_DRV_FIXED8,
282 85, UNIPHIER_PIN_PULL_DOWN), 280 85, UNIPHIER_PIN_PULL_DOWN),
283 UNIPHIER_PINCTRL_PIN(86, "HS2BCLKIN", UNIPHIER_PIN_IECTRL_NONE, 281 UNIPHIER_PINCTRL_PIN(86, "HS2BCLKIN", UNIPHIER_PIN_IECTRL_NONE,
284 -1, UNIPHIER_PIN_DRV_FIXED_8, 282 -1, UNIPHIER_PIN_DRV_FIXED8,
285 86, UNIPHIER_PIN_PULL_DOWN), 283 86, UNIPHIER_PIN_PULL_DOWN),
286 UNIPHIER_PINCTRL_PIN(87, "HS2SYNCIN", UNIPHIER_PIN_IECTRL_NONE, 284 UNIPHIER_PINCTRL_PIN(87, "HS2SYNCIN", UNIPHIER_PIN_IECTRL_NONE,
287 -1, UNIPHIER_PIN_DRV_FIXED_8, 285 -1, UNIPHIER_PIN_DRV_FIXED8,
288 87, UNIPHIER_PIN_PULL_DOWN), 286 87, UNIPHIER_PIN_PULL_DOWN),
289 UNIPHIER_PINCTRL_PIN(88, "HS2VALIN", UNIPHIER_PIN_IECTRL_NONE, 287 UNIPHIER_PINCTRL_PIN(88, "HS2VALIN", UNIPHIER_PIN_IECTRL_NONE,
290 -1, UNIPHIER_PIN_DRV_FIXED_8, 288 -1, UNIPHIER_PIN_DRV_FIXED8,
291 88, UNIPHIER_PIN_PULL_DOWN), 289 88, UNIPHIER_PIN_PULL_DOWN),
292 UNIPHIER_PINCTRL_PIN(89, "HS2DIN0", UNIPHIER_PIN_IECTRL_NONE, 290 UNIPHIER_PINCTRL_PIN(89, "HS2DIN0", UNIPHIER_PIN_IECTRL_NONE,
293 -1, UNIPHIER_PIN_DRV_FIXED_8, 291 -1, UNIPHIER_PIN_DRV_FIXED8,
294 89, UNIPHIER_PIN_PULL_DOWN), 292 89, UNIPHIER_PIN_PULL_DOWN),
295 UNIPHIER_PINCTRL_PIN(90, "HS2DIN1", UNIPHIER_PIN_IECTRL_NONE, 293 UNIPHIER_PINCTRL_PIN(90, "HS2DIN1", UNIPHIER_PIN_IECTRL_NONE,
296 -1, UNIPHIER_PIN_DRV_FIXED_8, 294 -1, UNIPHIER_PIN_DRV_FIXED8,
297 90, UNIPHIER_PIN_PULL_DOWN), 295 90, UNIPHIER_PIN_PULL_DOWN),
298 UNIPHIER_PINCTRL_PIN(91, "HS2DIN2", UNIPHIER_PIN_IECTRL_NONE, 296 UNIPHIER_PINCTRL_PIN(91, "HS2DIN2", UNIPHIER_PIN_IECTRL_NONE,
299 -1, UNIPHIER_PIN_DRV_FIXED_8, 297 -1, UNIPHIER_PIN_DRV_FIXED8,
300 91, UNIPHIER_PIN_PULL_DOWN), 298 91, UNIPHIER_PIN_PULL_DOWN),
301 UNIPHIER_PINCTRL_PIN(92, "HS2DIN3", UNIPHIER_PIN_IECTRL_NONE, 299 UNIPHIER_PINCTRL_PIN(92, "HS2DIN3", UNIPHIER_PIN_IECTRL_NONE,
302 -1, UNIPHIER_PIN_DRV_FIXED_8, 300 -1, UNIPHIER_PIN_DRV_FIXED8,
303 92, UNIPHIER_PIN_PULL_DOWN), 301 92, UNIPHIER_PIN_PULL_DOWN),
304 UNIPHIER_PINCTRL_PIN(93, "HS2DIN4", UNIPHIER_PIN_IECTRL_NONE, 302 UNIPHIER_PINCTRL_PIN(93, "HS2DIN4", UNIPHIER_PIN_IECTRL_NONE,
305 -1, UNIPHIER_PIN_DRV_FIXED_8, 303 -1, UNIPHIER_PIN_DRV_FIXED8,
306 93, UNIPHIER_PIN_PULL_DOWN), 304 93, UNIPHIER_PIN_PULL_DOWN),
307 UNIPHIER_PINCTRL_PIN(94, "HS2DIN5", UNIPHIER_PIN_IECTRL_NONE, 305 UNIPHIER_PINCTRL_PIN(94, "HS2DIN5", UNIPHIER_PIN_IECTRL_NONE,
308 -1, UNIPHIER_PIN_DRV_FIXED_8, 306 -1, UNIPHIER_PIN_DRV_FIXED8,
309 94, UNIPHIER_PIN_PULL_DOWN), 307 94, UNIPHIER_PIN_PULL_DOWN),
310 UNIPHIER_PINCTRL_PIN(95, "HS2DIN6", UNIPHIER_PIN_IECTRL_NONE, 308 UNIPHIER_PINCTRL_PIN(95, "HS2DIN6", UNIPHIER_PIN_IECTRL_NONE,
311 -1, UNIPHIER_PIN_DRV_FIXED_8, 309 -1, UNIPHIER_PIN_DRV_FIXED8,
312 95, UNIPHIER_PIN_PULL_DOWN), 310 95, UNIPHIER_PIN_PULL_DOWN),
313 UNIPHIER_PINCTRL_PIN(96, "HS2DIN7", UNIPHIER_PIN_IECTRL_NONE, 311 UNIPHIER_PINCTRL_PIN(96, "HS2DIN7", UNIPHIER_PIN_IECTRL_NONE,
314 -1, UNIPHIER_PIN_DRV_FIXED_8, 312 -1, UNIPHIER_PIN_DRV_FIXED8,
315 96, UNIPHIER_PIN_PULL_DOWN), 313 96, UNIPHIER_PIN_PULL_DOWN),
316 UNIPHIER_PINCTRL_PIN(97, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE, 314 UNIPHIER_PINCTRL_PIN(97, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE,
317 -1, UNIPHIER_PIN_DRV_FIXED_8, 315 -1, UNIPHIER_PIN_DRV_FIXED8,
318 97, UNIPHIER_PIN_PULL_DOWN), 316 97, UNIPHIER_PIN_PULL_DOWN),
319 UNIPHIER_PINCTRL_PIN(98, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE, 317 UNIPHIER_PINCTRL_PIN(98, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE,
320 -1, UNIPHIER_PIN_DRV_FIXED_8, 318 -1, UNIPHIER_PIN_DRV_FIXED8,
321 98, UNIPHIER_PIN_PULL_DOWN), 319 98, UNIPHIER_PIN_PULL_DOWN),
322 UNIPHIER_PINCTRL_PIN(99, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE, 320 UNIPHIER_PINCTRL_PIN(99, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE,
323 -1, UNIPHIER_PIN_DRV_FIXED_8, 321 -1, UNIPHIER_PIN_DRV_FIXED8,
324 99, UNIPHIER_PIN_PULL_DOWN), 322 99, UNIPHIER_PIN_PULL_DOWN),
325 UNIPHIER_PINCTRL_PIN(100, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE, 323 UNIPHIER_PINCTRL_PIN(100, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE,
326 -1, UNIPHIER_PIN_DRV_FIXED_8, 324 -1, UNIPHIER_PIN_DRV_FIXED8,
327 100, UNIPHIER_PIN_PULL_DOWN), 325 100, UNIPHIER_PIN_PULL_DOWN),
328 UNIPHIER_PINCTRL_PIN(101, "AO1D0", UNIPHIER_PIN_IECTRL_NONE, 326 UNIPHIER_PINCTRL_PIN(101, "AO1D0", UNIPHIER_PIN_IECTRL_NONE,
329 -1, UNIPHIER_PIN_DRV_FIXED_8, 327 -1, UNIPHIER_PIN_DRV_FIXED8,
330 101, UNIPHIER_PIN_PULL_DOWN), 328 101, UNIPHIER_PIN_PULL_DOWN),
331 UNIPHIER_PINCTRL_PIN(102, "AO1D1", UNIPHIER_PIN_IECTRL_NONE, 329 UNIPHIER_PINCTRL_PIN(102, "AO1D1", UNIPHIER_PIN_IECTRL_NONE,
332 -1, UNIPHIER_PIN_DRV_FIXED_8, 330 -1, UNIPHIER_PIN_DRV_FIXED8,
333 102, UNIPHIER_PIN_PULL_DOWN), 331 102, UNIPHIER_PIN_PULL_DOWN),
334 UNIPHIER_PINCTRL_PIN(103, "AO1D2", UNIPHIER_PIN_IECTRL_NONE, 332 UNIPHIER_PINCTRL_PIN(103, "AO1D2", UNIPHIER_PIN_IECTRL_NONE,
335 -1, UNIPHIER_PIN_DRV_FIXED_8, 333 -1, UNIPHIER_PIN_DRV_FIXED8,
336 103, UNIPHIER_PIN_PULL_DOWN), 334 103, UNIPHIER_PIN_PULL_DOWN),
337 UNIPHIER_PINCTRL_PIN(104, "AO1D3", UNIPHIER_PIN_IECTRL_NONE, 335 UNIPHIER_PINCTRL_PIN(104, "AO1D3", UNIPHIER_PIN_IECTRL_NONE,
338 -1, UNIPHIER_PIN_DRV_FIXED_8, 336 -1, UNIPHIER_PIN_DRV_FIXED8,
339 104, UNIPHIER_PIN_PULL_DOWN), 337 104, UNIPHIER_PIN_PULL_DOWN),
340 UNIPHIER_PINCTRL_PIN(105, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 338 UNIPHIER_PINCTRL_PIN(105, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE,
341 -1, UNIPHIER_PIN_DRV_FIXED_8, 339 -1, UNIPHIER_PIN_DRV_FIXED8,
342 105, UNIPHIER_PIN_PULL_DOWN), 340 105, UNIPHIER_PIN_PULL_DOWN),
343 UNIPHIER_PINCTRL_PIN(106, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 341 UNIPHIER_PINCTRL_PIN(106, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE,
344 -1, UNIPHIER_PIN_DRV_FIXED_8, 342 -1, UNIPHIER_PIN_DRV_FIXED8,
345 106, UNIPHIER_PIN_PULL_DOWN), 343 106, UNIPHIER_PIN_PULL_DOWN),
346 UNIPHIER_PINCTRL_PIN(107, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 344 UNIPHIER_PINCTRL_PIN(107, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE,
347 -1, UNIPHIER_PIN_DRV_FIXED_8, 345 -1, UNIPHIER_PIN_DRV_FIXED8,
348 107, UNIPHIER_PIN_PULL_DOWN), 346 107, UNIPHIER_PIN_PULL_DOWN),
349 UNIPHIER_PINCTRL_PIN(108, "AO2D0", UNIPHIER_PIN_IECTRL_NONE, 347 UNIPHIER_PINCTRL_PIN(108, "AO2D0", UNIPHIER_PIN_IECTRL_NONE,
350 -1, UNIPHIER_PIN_DRV_FIXED_8, 348 -1, UNIPHIER_PIN_DRV_FIXED8,
351 108, UNIPHIER_PIN_PULL_DOWN), 349 108, UNIPHIER_PIN_PULL_DOWN),
352 UNIPHIER_PINCTRL_PIN(109, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 350 UNIPHIER_PINCTRL_PIN(109, "SDA0", UNIPHIER_PIN_IECTRL_NONE,
353 -1, UNIPHIER_PIN_DRV_FIXED_8, 351 -1, UNIPHIER_PIN_DRV_FIXED8,
354 109, UNIPHIER_PIN_PULL_DOWN), 352 109, UNIPHIER_PIN_PULL_DOWN),
355 UNIPHIER_PINCTRL_PIN(110, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 353 UNIPHIER_PINCTRL_PIN(110, "SCL0", UNIPHIER_PIN_IECTRL_NONE,
356 -1, UNIPHIER_PIN_DRV_FIXED_8, 354 -1, UNIPHIER_PIN_DRV_FIXED8,
357 110, UNIPHIER_PIN_PULL_DOWN), 355 110, UNIPHIER_PIN_PULL_DOWN),
358 UNIPHIER_PINCTRL_PIN(111, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 356 UNIPHIER_PINCTRL_PIN(111, "SDA1", UNIPHIER_PIN_IECTRL_NONE,
359 -1, UNIPHIER_PIN_DRV_FIXED_8, 357 -1, UNIPHIER_PIN_DRV_FIXED8,
360 111, UNIPHIER_PIN_PULL_DOWN), 358 111, UNIPHIER_PIN_PULL_DOWN),
361 UNIPHIER_PINCTRL_PIN(112, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 359 UNIPHIER_PINCTRL_PIN(112, "SCL1", UNIPHIER_PIN_IECTRL_NONE,
362 -1, UNIPHIER_PIN_DRV_FIXED_8, 360 -1, UNIPHIER_PIN_DRV_FIXED8,
363 112, UNIPHIER_PIN_PULL_DOWN), 361 112, UNIPHIER_PIN_PULL_DOWN),
364 UNIPHIER_PINCTRL_PIN(113, "SBO0", 0, 362 UNIPHIER_PINCTRL_PIN(113, "SBO0", 0,
365 113, UNIPHIER_PIN_DRV_4_8, 363 113, UNIPHIER_PIN_DRV_1BIT,
366 113, UNIPHIER_PIN_PULL_UP), 364 113, UNIPHIER_PIN_PULL_UP),
367 UNIPHIER_PINCTRL_PIN(114, "SBI0", 0, 365 UNIPHIER_PINCTRL_PIN(114, "SBI0", 0,
368 114, UNIPHIER_PIN_DRV_4_8, 366 114, UNIPHIER_PIN_DRV_1BIT,
369 114, UNIPHIER_PIN_PULL_UP), 367 114, UNIPHIER_PIN_PULL_UP),
370 UNIPHIER_PINCTRL_PIN(115, "TXD1", 0, 368 UNIPHIER_PINCTRL_PIN(115, "TXD1", 0,
371 115, UNIPHIER_PIN_DRV_4_8, 369 115, UNIPHIER_PIN_DRV_1BIT,
372 115, UNIPHIER_PIN_PULL_UP), 370 115, UNIPHIER_PIN_PULL_UP),
373 UNIPHIER_PINCTRL_PIN(116, "RXD1", 0, 371 UNIPHIER_PINCTRL_PIN(116, "RXD1", 0,
374 116, UNIPHIER_PIN_DRV_4_8, 372 116, UNIPHIER_PIN_DRV_1BIT,
375 116, UNIPHIER_PIN_PULL_UP), 373 116, UNIPHIER_PIN_PULL_UP),
376 UNIPHIER_PINCTRL_PIN(117, "PWSRA", UNIPHIER_PIN_IECTRL_NONE, 374 UNIPHIER_PINCTRL_PIN(117, "PWSRA", UNIPHIER_PIN_IECTRL_NONE,
377 -1, UNIPHIER_PIN_DRV_FIXED_8, 375 -1, UNIPHIER_PIN_DRV_FIXED8,
378 117, UNIPHIER_PIN_PULL_DOWN), 376 117, UNIPHIER_PIN_PULL_DOWN),
379 UNIPHIER_PINCTRL_PIN(118, "XIRQ0", UNIPHIER_PIN_IECTRL_NONE, 377 UNIPHIER_PINCTRL_PIN(118, "XIRQ0", UNIPHIER_PIN_IECTRL_NONE,
380 -1, UNIPHIER_PIN_DRV_FIXED_8, 378 -1, UNIPHIER_PIN_DRV_FIXED8,
381 118, UNIPHIER_PIN_PULL_DOWN), 379 118, UNIPHIER_PIN_PULL_DOWN),
382 UNIPHIER_PINCTRL_PIN(119, "XIRQ1", UNIPHIER_PIN_IECTRL_NONE, 380 UNIPHIER_PINCTRL_PIN(119, "XIRQ1", UNIPHIER_PIN_IECTRL_NONE,
383 -1, UNIPHIER_PIN_DRV_FIXED_8, 381 -1, UNIPHIER_PIN_DRV_FIXED8,
384 119, UNIPHIER_PIN_PULL_DOWN), 382 119, UNIPHIER_PIN_PULL_DOWN),
385 UNIPHIER_PINCTRL_PIN(120, "XIRQ2", UNIPHIER_PIN_IECTRL_NONE, 383 UNIPHIER_PINCTRL_PIN(120, "XIRQ2", UNIPHIER_PIN_IECTRL_NONE,
386 -1, UNIPHIER_PIN_DRV_FIXED_8, 384 -1, UNIPHIER_PIN_DRV_FIXED8,
387 120, UNIPHIER_PIN_PULL_DOWN), 385 120, UNIPHIER_PIN_PULL_DOWN),
388 UNIPHIER_PINCTRL_PIN(121, "XIRQ3", UNIPHIER_PIN_IECTRL_NONE, 386 UNIPHIER_PINCTRL_PIN(121, "XIRQ3", UNIPHIER_PIN_IECTRL_NONE,
389 -1, UNIPHIER_PIN_DRV_FIXED_8, 387 -1, UNIPHIER_PIN_DRV_FIXED8,
390 121, UNIPHIER_PIN_PULL_DOWN), 388 121, UNIPHIER_PIN_PULL_DOWN),
391 UNIPHIER_PINCTRL_PIN(122, "XIRQ4", UNIPHIER_PIN_IECTRL_NONE, 389 UNIPHIER_PINCTRL_PIN(122, "XIRQ4", UNIPHIER_PIN_IECTRL_NONE,
392 -1, UNIPHIER_PIN_DRV_FIXED_8, 390 -1, UNIPHIER_PIN_DRV_FIXED8,
393 122, UNIPHIER_PIN_PULL_DOWN), 391 122, UNIPHIER_PIN_PULL_DOWN),
394 UNIPHIER_PINCTRL_PIN(123, "XIRQ5", UNIPHIER_PIN_IECTRL_NONE, 392 UNIPHIER_PINCTRL_PIN(123, "XIRQ5", UNIPHIER_PIN_IECTRL_NONE,
395 -1, UNIPHIER_PIN_DRV_FIXED_8, 393 -1, UNIPHIER_PIN_DRV_FIXED8,
396 123, UNIPHIER_PIN_PULL_DOWN), 394 123, UNIPHIER_PIN_PULL_DOWN),
397 UNIPHIER_PINCTRL_PIN(124, "XIRQ6", UNIPHIER_PIN_IECTRL_NONE, 395 UNIPHIER_PINCTRL_PIN(124, "XIRQ6", UNIPHIER_PIN_IECTRL_NONE,
398 -1, UNIPHIER_PIN_DRV_FIXED_8, 396 -1, UNIPHIER_PIN_DRV_FIXED8,
399 124, UNIPHIER_PIN_PULL_DOWN), 397 124, UNIPHIER_PIN_PULL_DOWN),
400 UNIPHIER_PINCTRL_PIN(125, "XIRQ7", UNIPHIER_PIN_IECTRL_NONE, 398 UNIPHIER_PINCTRL_PIN(125, "XIRQ7", UNIPHIER_PIN_IECTRL_NONE,
401 -1, UNIPHIER_PIN_DRV_FIXED_8, 399 -1, UNIPHIER_PIN_DRV_FIXED8,
402 125, UNIPHIER_PIN_PULL_DOWN), 400 125, UNIPHIER_PIN_PULL_DOWN),
403 UNIPHIER_PINCTRL_PIN(126, "XIRQ8", UNIPHIER_PIN_IECTRL_NONE, 401 UNIPHIER_PINCTRL_PIN(126, "XIRQ8", UNIPHIER_PIN_IECTRL_NONE,
404 -1, UNIPHIER_PIN_DRV_FIXED_8, 402 -1, UNIPHIER_PIN_DRV_FIXED8,
405 126, UNIPHIER_PIN_PULL_DOWN), 403 126, UNIPHIER_PIN_PULL_DOWN),
406 UNIPHIER_PINCTRL_PIN(127, "PORT00", UNIPHIER_PIN_IECTRL_NONE, 404 UNIPHIER_PINCTRL_PIN(127, "PORT00", UNIPHIER_PIN_IECTRL_NONE,
407 -1, UNIPHIER_PIN_DRV_FIXED_8, 405 -1, UNIPHIER_PIN_DRV_FIXED8,
408 127, UNIPHIER_PIN_PULL_DOWN), 406 127, UNIPHIER_PIN_PULL_DOWN),
409 UNIPHIER_PINCTRL_PIN(128, "PORT01", UNIPHIER_PIN_IECTRL_NONE, 407 UNIPHIER_PINCTRL_PIN(128, "PORT01", UNIPHIER_PIN_IECTRL_NONE,
410 -1, UNIPHIER_PIN_DRV_FIXED_8, 408 -1, UNIPHIER_PIN_DRV_FIXED8,
411 128, UNIPHIER_PIN_PULL_DOWN), 409 128, UNIPHIER_PIN_PULL_DOWN),
412 UNIPHIER_PINCTRL_PIN(129, "PORT02", UNIPHIER_PIN_IECTRL_NONE, 410 UNIPHIER_PINCTRL_PIN(129, "PORT02", UNIPHIER_PIN_IECTRL_NONE,
413 -1, UNIPHIER_PIN_DRV_FIXED_8, 411 -1, UNIPHIER_PIN_DRV_FIXED8,
414 129, UNIPHIER_PIN_PULL_DOWN), 412 129, UNIPHIER_PIN_PULL_DOWN),
415 UNIPHIER_PINCTRL_PIN(130, "PORT03", UNIPHIER_PIN_IECTRL_NONE, 413 UNIPHIER_PINCTRL_PIN(130, "PORT03", UNIPHIER_PIN_IECTRL_NONE,
416 -1, UNIPHIER_PIN_DRV_FIXED_8, 414 -1, UNIPHIER_PIN_DRV_FIXED8,
417 130, UNIPHIER_PIN_PULL_DOWN), 415 130, UNIPHIER_PIN_PULL_DOWN),
418 UNIPHIER_PINCTRL_PIN(131, "PORT04", UNIPHIER_PIN_IECTRL_NONE, 416 UNIPHIER_PINCTRL_PIN(131, "PORT04", UNIPHIER_PIN_IECTRL_NONE,
419 -1, UNIPHIER_PIN_DRV_FIXED_8, 417 -1, UNIPHIER_PIN_DRV_FIXED8,
420 131, UNIPHIER_PIN_PULL_DOWN), 418 131, UNIPHIER_PIN_PULL_DOWN),
421 UNIPHIER_PINCTRL_PIN(132, "PORT05", UNIPHIER_PIN_IECTRL_NONE, 419 UNIPHIER_PINCTRL_PIN(132, "PORT05", UNIPHIER_PIN_IECTRL_NONE,
422 -1, UNIPHIER_PIN_DRV_FIXED_8, 420 -1, UNIPHIER_PIN_DRV_FIXED8,
423 132, UNIPHIER_PIN_PULL_DOWN), 421 132, UNIPHIER_PIN_PULL_DOWN),
424 UNIPHIER_PINCTRL_PIN(133, "PORT06", UNIPHIER_PIN_IECTRL_NONE, 422 UNIPHIER_PINCTRL_PIN(133, "PORT06", UNIPHIER_PIN_IECTRL_NONE,
425 -1, UNIPHIER_PIN_DRV_FIXED_8, 423 -1, UNIPHIER_PIN_DRV_FIXED8,
426 133, UNIPHIER_PIN_PULL_DOWN), 424 133, UNIPHIER_PIN_PULL_DOWN),
427 UNIPHIER_PINCTRL_PIN(134, "PORT07", UNIPHIER_PIN_IECTRL_NONE, 425 UNIPHIER_PINCTRL_PIN(134, "PORT07", UNIPHIER_PIN_IECTRL_NONE,
428 -1, UNIPHIER_PIN_DRV_FIXED_8, 426 -1, UNIPHIER_PIN_DRV_FIXED8,
429 134, UNIPHIER_PIN_PULL_DOWN), 427 134, UNIPHIER_PIN_PULL_DOWN),
430 UNIPHIER_PINCTRL_PIN(135, "PORT10", UNIPHIER_PIN_IECTRL_NONE, 428 UNIPHIER_PINCTRL_PIN(135, "PORT10", UNIPHIER_PIN_IECTRL_NONE,
431 -1, UNIPHIER_PIN_DRV_FIXED_8, 429 -1, UNIPHIER_PIN_DRV_FIXED8,
432 135, UNIPHIER_PIN_PULL_DOWN), 430 135, UNIPHIER_PIN_PULL_DOWN),
433 UNIPHIER_PINCTRL_PIN(136, "PORT11", UNIPHIER_PIN_IECTRL_NONE, 431 UNIPHIER_PINCTRL_PIN(136, "PORT11", UNIPHIER_PIN_IECTRL_NONE,
434 -1, UNIPHIER_PIN_DRV_FIXED_8, 432 -1, UNIPHIER_PIN_DRV_FIXED8,
435 136, UNIPHIER_PIN_PULL_DOWN), 433 136, UNIPHIER_PIN_PULL_DOWN),
436 UNIPHIER_PINCTRL_PIN(137, "PORT12", UNIPHIER_PIN_IECTRL_NONE, 434 UNIPHIER_PINCTRL_PIN(137, "PORT12", UNIPHIER_PIN_IECTRL_NONE,
437 -1, UNIPHIER_PIN_DRV_FIXED_8, 435 -1, UNIPHIER_PIN_DRV_FIXED8,
438 137, UNIPHIER_PIN_PULL_DOWN), 436 137, UNIPHIER_PIN_PULL_DOWN),
439 UNIPHIER_PINCTRL_PIN(138, "PORT13", UNIPHIER_PIN_IECTRL_NONE, 437 UNIPHIER_PINCTRL_PIN(138, "PORT13", UNIPHIER_PIN_IECTRL_NONE,
440 -1, UNIPHIER_PIN_DRV_FIXED_8, 438 -1, UNIPHIER_PIN_DRV_FIXED8,
441 138, UNIPHIER_PIN_PULL_DOWN), 439 138, UNIPHIER_PIN_PULL_DOWN),
442 UNIPHIER_PINCTRL_PIN(139, "PORT14", UNIPHIER_PIN_IECTRL_NONE, 440 UNIPHIER_PINCTRL_PIN(139, "PORT14", UNIPHIER_PIN_IECTRL_NONE,
443 -1, UNIPHIER_PIN_DRV_FIXED_8, 441 -1, UNIPHIER_PIN_DRV_FIXED8,
444 139, UNIPHIER_PIN_PULL_DOWN), 442 139, UNIPHIER_PIN_PULL_DOWN),
445 UNIPHIER_PINCTRL_PIN(140, "PORT15", UNIPHIER_PIN_IECTRL_NONE, 443 UNIPHIER_PINCTRL_PIN(140, "PORT15", UNIPHIER_PIN_IECTRL_NONE,
446 -1, UNIPHIER_PIN_DRV_FIXED_8, 444 -1, UNIPHIER_PIN_DRV_FIXED8,
447 140, UNIPHIER_PIN_PULL_DOWN), 445 140, UNIPHIER_PIN_PULL_DOWN),
448 UNIPHIER_PINCTRL_PIN(141, "PORT16", UNIPHIER_PIN_IECTRL_NONE, 446 UNIPHIER_PINCTRL_PIN(141, "PORT16", UNIPHIER_PIN_IECTRL_NONE,
449 -1, UNIPHIER_PIN_DRV_FIXED_8, 447 -1, UNIPHIER_PIN_DRV_FIXED8,
450 141, UNIPHIER_PIN_PULL_DOWN), 448 141, UNIPHIER_PIN_PULL_DOWN),
451 UNIPHIER_PINCTRL_PIN(142, "LPST", UNIPHIER_PIN_IECTRL_NONE, 449 UNIPHIER_PINCTRL_PIN(142, "LPST", UNIPHIER_PIN_IECTRL_NONE,
452 142, UNIPHIER_PIN_DRV_4_8, 450 142, UNIPHIER_PIN_DRV_1BIT,
453 142, UNIPHIER_PIN_PULL_DOWN), 451 142, UNIPHIER_PIN_PULL_DOWN),
454 UNIPHIER_PINCTRL_PIN(143, "MDC", 0, 452 UNIPHIER_PINCTRL_PIN(143, "MDC", 0,
455 143, UNIPHIER_PIN_DRV_4_8, 453 143, UNIPHIER_PIN_DRV_1BIT,
456 143, UNIPHIER_PIN_PULL_DOWN), 454 143, UNIPHIER_PIN_PULL_DOWN),
457 UNIPHIER_PINCTRL_PIN(144, "MDIO", 0, 455 UNIPHIER_PINCTRL_PIN(144, "MDIO", 0,
458 144, UNIPHIER_PIN_DRV_4_8, 456 144, UNIPHIER_PIN_DRV_1BIT,
459 144, UNIPHIER_PIN_PULL_DOWN), 457 144, UNIPHIER_PIN_PULL_DOWN),
460 UNIPHIER_PINCTRL_PIN(145, "MDIO_INTL", 0, 458 UNIPHIER_PINCTRL_PIN(145, "MDIO_INTL", 0,
461 145, UNIPHIER_PIN_DRV_4_8, 459 145, UNIPHIER_PIN_DRV_1BIT,
462 145, UNIPHIER_PIN_PULL_DOWN), 460 145, UNIPHIER_PIN_PULL_DOWN),
463 UNIPHIER_PINCTRL_PIN(146, "PHYRSTL", 0, 461 UNIPHIER_PINCTRL_PIN(146, "PHYRSTL", 0,
464 146, UNIPHIER_PIN_DRV_4_8, 462 146, UNIPHIER_PIN_DRV_1BIT,
465 146, UNIPHIER_PIN_PULL_DOWN), 463 146, UNIPHIER_PIN_PULL_DOWN),
466 UNIPHIER_PINCTRL_PIN(147, "RGMII_RXCLK", 0, 464 UNIPHIER_PINCTRL_PIN(147, "RGMII_RXCLK", 0,
467 147, UNIPHIER_PIN_DRV_4_8, 465 147, UNIPHIER_PIN_DRV_1BIT,
468 147, UNIPHIER_PIN_PULL_DOWN), 466 147, UNIPHIER_PIN_PULL_DOWN),
469 UNIPHIER_PINCTRL_PIN(148, "RGMII_RXD0", 0, 467 UNIPHIER_PINCTRL_PIN(148, "RGMII_RXD0", 0,
470 148, UNIPHIER_PIN_DRV_4_8, 468 148, UNIPHIER_PIN_DRV_1BIT,
471 148, UNIPHIER_PIN_PULL_DOWN), 469 148, UNIPHIER_PIN_PULL_DOWN),
472 UNIPHIER_PINCTRL_PIN(149, "RGMII_RXD1", 0, 470 UNIPHIER_PINCTRL_PIN(149, "RGMII_RXD1", 0,
473 149, UNIPHIER_PIN_DRV_4_8, 471 149, UNIPHIER_PIN_DRV_1BIT,
474 149, UNIPHIER_PIN_PULL_DOWN), 472 149, UNIPHIER_PIN_PULL_DOWN),
475 UNIPHIER_PINCTRL_PIN(150, "RGMII_RXD2", 0, 473 UNIPHIER_PINCTRL_PIN(150, "RGMII_RXD2", 0,
476 150, UNIPHIER_PIN_DRV_4_8, 474 150, UNIPHIER_PIN_DRV_1BIT,
477 150, UNIPHIER_PIN_PULL_DOWN), 475 150, UNIPHIER_PIN_PULL_DOWN),
478 UNIPHIER_PINCTRL_PIN(151, "RGMII_RXD3", 0, 476 UNIPHIER_PINCTRL_PIN(151, "RGMII_RXD3", 0,
479 151, UNIPHIER_PIN_DRV_4_8, 477 151, UNIPHIER_PIN_DRV_1BIT,
480 151, UNIPHIER_PIN_PULL_DOWN), 478 151, UNIPHIER_PIN_PULL_DOWN),
481 UNIPHIER_PINCTRL_PIN(152, "RGMII_RXCTL", 0, 479 UNIPHIER_PINCTRL_PIN(152, "RGMII_RXCTL", 0,
482 152, UNIPHIER_PIN_DRV_4_8, 480 152, UNIPHIER_PIN_DRV_1BIT,
483 152, UNIPHIER_PIN_PULL_DOWN), 481 152, UNIPHIER_PIN_PULL_DOWN),
484 UNIPHIER_PINCTRL_PIN(153, "RGMII_TXCLK", 0, 482 UNIPHIER_PINCTRL_PIN(153, "RGMII_TXCLK", 0,
485 153, UNIPHIER_PIN_DRV_4_8, 483 153, UNIPHIER_PIN_DRV_1BIT,
486 153, UNIPHIER_PIN_PULL_DOWN), 484 153, UNIPHIER_PIN_PULL_DOWN),
487 UNIPHIER_PINCTRL_PIN(154, "RGMII_TXD0", 0, 485 UNIPHIER_PINCTRL_PIN(154, "RGMII_TXD0", 0,
488 154, UNIPHIER_PIN_DRV_4_8, 486 154, UNIPHIER_PIN_DRV_1BIT,
489 154, UNIPHIER_PIN_PULL_DOWN), 487 154, UNIPHIER_PIN_PULL_DOWN),
490 UNIPHIER_PINCTRL_PIN(155, "RGMII_TXD1", 0, 488 UNIPHIER_PINCTRL_PIN(155, "RGMII_TXD1", 0,
491 155, UNIPHIER_PIN_DRV_4_8, 489 155, UNIPHIER_PIN_DRV_1BIT,
492 155, UNIPHIER_PIN_PULL_DOWN), 490 155, UNIPHIER_PIN_PULL_DOWN),
493 UNIPHIER_PINCTRL_PIN(156, "RGMII_TXD2", 0, 491 UNIPHIER_PINCTRL_PIN(156, "RGMII_TXD2", 0,
494 156, UNIPHIER_PIN_DRV_4_8, 492 156, UNIPHIER_PIN_DRV_1BIT,
495 156, UNIPHIER_PIN_PULL_DOWN), 493 156, UNIPHIER_PIN_PULL_DOWN),
496 UNIPHIER_PINCTRL_PIN(157, "RGMII_TXD3", 0, 494 UNIPHIER_PINCTRL_PIN(157, "RGMII_TXD3", 0,
497 157, UNIPHIER_PIN_DRV_4_8, 495 157, UNIPHIER_PIN_DRV_1BIT,
498 157, UNIPHIER_PIN_PULL_DOWN), 496 157, UNIPHIER_PIN_PULL_DOWN),
499 UNIPHIER_PINCTRL_PIN(158, "RGMII_TXCTL", 0, 497 UNIPHIER_PINCTRL_PIN(158, "RGMII_TXCTL", 0,
500 158, UNIPHIER_PIN_DRV_4_8, 498 158, UNIPHIER_PIN_DRV_1BIT,
501 158, UNIPHIER_PIN_PULL_DOWN), 499 158, UNIPHIER_PIN_PULL_DOWN),
502 UNIPHIER_PINCTRL_PIN(159, "A_D_PCD00OUT", UNIPHIER_PIN_IECTRL_NONE, 500 UNIPHIER_PINCTRL_PIN(159, "A_D_PCD00OUT", UNIPHIER_PIN_IECTRL_NONE,
503 -1, UNIPHIER_PIN_DRV_FIXED_8, 501 -1, UNIPHIER_PIN_DRV_FIXED8,
504 159, UNIPHIER_PIN_PULL_DOWN), 502 159, UNIPHIER_PIN_PULL_DOWN),
505 UNIPHIER_PINCTRL_PIN(160, "A_D_PCD01OUT", UNIPHIER_PIN_IECTRL_NONE, 503 UNIPHIER_PINCTRL_PIN(160, "A_D_PCD01OUT", UNIPHIER_PIN_IECTRL_NONE,
506 -1, UNIPHIER_PIN_DRV_FIXED_8, 504 -1, UNIPHIER_PIN_DRV_FIXED8,
507 160, UNIPHIER_PIN_PULL_DOWN), 505 160, UNIPHIER_PIN_PULL_DOWN),
508 UNIPHIER_PINCTRL_PIN(161, "A_D_PCD02OUT", UNIPHIER_PIN_IECTRL_NONE, 506 UNIPHIER_PINCTRL_PIN(161, "A_D_PCD02OUT", UNIPHIER_PIN_IECTRL_NONE,
509 -1, UNIPHIER_PIN_DRV_FIXED_8, 507 -1, UNIPHIER_PIN_DRV_FIXED8,
510 161, UNIPHIER_PIN_PULL_DOWN), 508 161, UNIPHIER_PIN_PULL_DOWN),
511 UNIPHIER_PINCTRL_PIN(162, "A_D_PCD03OUT", UNIPHIER_PIN_IECTRL_NONE, 509 UNIPHIER_PINCTRL_PIN(162, "A_D_PCD03OUT", UNIPHIER_PIN_IECTRL_NONE,
512 -1, UNIPHIER_PIN_DRV_FIXED_8, 510 -1, UNIPHIER_PIN_DRV_FIXED8,
513 162, UNIPHIER_PIN_PULL_DOWN), 511 162, UNIPHIER_PIN_PULL_DOWN),
514 UNIPHIER_PINCTRL_PIN(163, "A_D_PCD04OUT", UNIPHIER_PIN_IECTRL_NONE, 512 UNIPHIER_PINCTRL_PIN(163, "A_D_PCD04OUT", UNIPHIER_PIN_IECTRL_NONE,
515 -1, UNIPHIER_PIN_DRV_FIXED_8, 513 -1, UNIPHIER_PIN_DRV_FIXED8,
516 163, UNIPHIER_PIN_PULL_DOWN), 514 163, UNIPHIER_PIN_PULL_DOWN),
517 UNIPHIER_PINCTRL_PIN(164, "A_D_PCD05OUT", UNIPHIER_PIN_IECTRL_NONE, 515 UNIPHIER_PINCTRL_PIN(164, "A_D_PCD05OUT", UNIPHIER_PIN_IECTRL_NONE,
518 -1, UNIPHIER_PIN_DRV_FIXED_8, 516 -1, UNIPHIER_PIN_DRV_FIXED8,
519 164, UNIPHIER_PIN_PULL_DOWN), 517 164, UNIPHIER_PIN_PULL_DOWN),
520 UNIPHIER_PINCTRL_PIN(165, "A_D_PCD06OUT", UNIPHIER_PIN_IECTRL_NONE, 518 UNIPHIER_PINCTRL_PIN(165, "A_D_PCD06OUT", UNIPHIER_PIN_IECTRL_NONE,
521 -1, UNIPHIER_PIN_DRV_FIXED_8, 519 -1, UNIPHIER_PIN_DRV_FIXED8,
522 165, UNIPHIER_PIN_PULL_DOWN), 520 165, UNIPHIER_PIN_PULL_DOWN),
523 UNIPHIER_PINCTRL_PIN(166, "A_D_PCD07OUT", UNIPHIER_PIN_IECTRL_NONE, 521 UNIPHIER_PINCTRL_PIN(166, "A_D_PCD07OUT", UNIPHIER_PIN_IECTRL_NONE,
524 -1, UNIPHIER_PIN_DRV_FIXED_8, 522 -1, UNIPHIER_PIN_DRV_FIXED8,
525 166, UNIPHIER_PIN_PULL_DOWN), 523 166, UNIPHIER_PIN_PULL_DOWN),
526 UNIPHIER_PINCTRL_PIN(167, "A_D_PCD00IN", UNIPHIER_PIN_IECTRL_NONE, 524 UNIPHIER_PINCTRL_PIN(167, "A_D_PCD00IN", UNIPHIER_PIN_IECTRL_NONE,
527 -1, UNIPHIER_PIN_DRV_FIXED_8, 525 -1, UNIPHIER_PIN_DRV_FIXED8,
528 167, UNIPHIER_PIN_PULL_DOWN), 526 167, UNIPHIER_PIN_PULL_DOWN),
529 UNIPHIER_PINCTRL_PIN(168, "A_D_PCD01IN", UNIPHIER_PIN_IECTRL_NONE, 527 UNIPHIER_PINCTRL_PIN(168, "A_D_PCD01IN", UNIPHIER_PIN_IECTRL_NONE,
530 -1, UNIPHIER_PIN_DRV_FIXED_8, 528 -1, UNIPHIER_PIN_DRV_FIXED8,
531 168, UNIPHIER_PIN_PULL_DOWN), 529 168, UNIPHIER_PIN_PULL_DOWN),
532 UNIPHIER_PINCTRL_PIN(169, "A_D_PCD02IN", UNIPHIER_PIN_IECTRL_NONE, 530 UNIPHIER_PINCTRL_PIN(169, "A_D_PCD02IN", UNIPHIER_PIN_IECTRL_NONE,
533 -1, UNIPHIER_PIN_DRV_FIXED_8, 531 -1, UNIPHIER_PIN_DRV_FIXED8,
534 169, UNIPHIER_PIN_PULL_DOWN), 532 169, UNIPHIER_PIN_PULL_DOWN),
535 UNIPHIER_PINCTRL_PIN(170, "A_D_PCD03IN", UNIPHIER_PIN_IECTRL_NONE, 533 UNIPHIER_PINCTRL_PIN(170, "A_D_PCD03IN", UNIPHIER_PIN_IECTRL_NONE,
536 -1, UNIPHIER_PIN_DRV_FIXED_8, 534 -1, UNIPHIER_PIN_DRV_FIXED8,
537 170, UNIPHIER_PIN_PULL_DOWN), 535 170, UNIPHIER_PIN_PULL_DOWN),
538 UNIPHIER_PINCTRL_PIN(171, "A_D_PCD04IN", UNIPHIER_PIN_IECTRL_NONE, 536 UNIPHIER_PINCTRL_PIN(171, "A_D_PCD04IN", UNIPHIER_PIN_IECTRL_NONE,
539 -1, UNIPHIER_PIN_DRV_FIXED_8, 537 -1, UNIPHIER_PIN_DRV_FIXED8,
540 171, UNIPHIER_PIN_PULL_DOWN), 538 171, UNIPHIER_PIN_PULL_DOWN),
541 UNIPHIER_PINCTRL_PIN(172, "A_D_PCD05IN", UNIPHIER_PIN_IECTRL_NONE, 539 UNIPHIER_PINCTRL_PIN(172, "A_D_PCD05IN", UNIPHIER_PIN_IECTRL_NONE,
542 -1, UNIPHIER_PIN_DRV_FIXED_8, 540 -1, UNIPHIER_PIN_DRV_FIXED8,
543 172, UNIPHIER_PIN_PULL_DOWN), 541 172, UNIPHIER_PIN_PULL_DOWN),
544 UNIPHIER_PINCTRL_PIN(173, "A_D_PCD06IN", UNIPHIER_PIN_IECTRL_NONE, 542 UNIPHIER_PINCTRL_PIN(173, "A_D_PCD06IN", UNIPHIER_PIN_IECTRL_NONE,
545 -1, UNIPHIER_PIN_DRV_FIXED_8, 543 -1, UNIPHIER_PIN_DRV_FIXED8,
546 173, UNIPHIER_PIN_PULL_DOWN), 544 173, UNIPHIER_PIN_PULL_DOWN),
547 UNIPHIER_PINCTRL_PIN(174, "A_D_PCD07IN", UNIPHIER_PIN_IECTRL_NONE, 545 UNIPHIER_PINCTRL_PIN(174, "A_D_PCD07IN", UNIPHIER_PIN_IECTRL_NONE,
548 -1, UNIPHIER_PIN_DRV_FIXED_8, 546 -1, UNIPHIER_PIN_DRV_FIXED8,
549 174, UNIPHIER_PIN_PULL_DOWN), 547 174, UNIPHIER_PIN_PULL_DOWN),
550 UNIPHIER_PINCTRL_PIN(175, "A_D_PCDNOE", UNIPHIER_PIN_IECTRL_NONE, 548 UNIPHIER_PINCTRL_PIN(175, "A_D_PCDNOE", UNIPHIER_PIN_IECTRL_NONE,
551 -1, UNIPHIER_PIN_DRV_FIXED_8, 549 -1, UNIPHIER_PIN_DRV_FIXED8,
552 175, UNIPHIER_PIN_PULL_DOWN), 550 175, UNIPHIER_PIN_PULL_DOWN),
553 UNIPHIER_PINCTRL_PIN(176, "A_D_PC0READY", UNIPHIER_PIN_IECTRL_NONE, 551 UNIPHIER_PINCTRL_PIN(176, "A_D_PC0READY", UNIPHIER_PIN_IECTRL_NONE,
554 -1, UNIPHIER_PIN_DRV_FIXED_8, 552 -1, UNIPHIER_PIN_DRV_FIXED8,
555 176, UNIPHIER_PIN_PULL_DOWN), 553 176, UNIPHIER_PIN_PULL_DOWN),
556 UNIPHIER_PINCTRL_PIN(177, "A_D_PC0CD1", UNIPHIER_PIN_IECTRL_NONE, 554 UNIPHIER_PINCTRL_PIN(177, "A_D_PC0CD1", UNIPHIER_PIN_IECTRL_NONE,
557 -1, UNIPHIER_PIN_DRV_FIXED_8, 555 -1, UNIPHIER_PIN_DRV_FIXED8,
558 177, UNIPHIER_PIN_PULL_DOWN), 556 177, UNIPHIER_PIN_PULL_DOWN),
559 UNIPHIER_PINCTRL_PIN(178, "A_D_PC0CD2", UNIPHIER_PIN_IECTRL_NONE, 557 UNIPHIER_PINCTRL_PIN(178, "A_D_PC0CD2", UNIPHIER_PIN_IECTRL_NONE,
560 -1, UNIPHIER_PIN_DRV_FIXED_8, 558 -1, UNIPHIER_PIN_DRV_FIXED8,
561 178, UNIPHIER_PIN_PULL_DOWN), 559 178, UNIPHIER_PIN_PULL_DOWN),
562 UNIPHIER_PINCTRL_PIN(179, "A_D_PC0WAIT", UNIPHIER_PIN_IECTRL_NONE, 560 UNIPHIER_PINCTRL_PIN(179, "A_D_PC0WAIT", UNIPHIER_PIN_IECTRL_NONE,
563 -1, UNIPHIER_PIN_DRV_FIXED_8, 561 -1, UNIPHIER_PIN_DRV_FIXED8,
564 179, UNIPHIER_PIN_PULL_DOWN), 562 179, UNIPHIER_PIN_PULL_DOWN),
565 UNIPHIER_PINCTRL_PIN(180, "A_D_PC0RESET", UNIPHIER_PIN_IECTRL_NONE, 563 UNIPHIER_PINCTRL_PIN(180, "A_D_PC0RESET", UNIPHIER_PIN_IECTRL_NONE,
566 -1, UNIPHIER_PIN_DRV_FIXED_8, 564 -1, UNIPHIER_PIN_DRV_FIXED8,
567 180, UNIPHIER_PIN_PULL_DOWN), 565 180, UNIPHIER_PIN_PULL_DOWN),
568 UNIPHIER_PINCTRL_PIN(181, "A_D_PC0CE1", UNIPHIER_PIN_IECTRL_NONE, 566 UNIPHIER_PINCTRL_PIN(181, "A_D_PC0CE1", UNIPHIER_PIN_IECTRL_NONE,
569 -1, UNIPHIER_PIN_DRV_FIXED_8, 567 -1, UNIPHIER_PIN_DRV_FIXED8,
570 181, UNIPHIER_PIN_PULL_DOWN), 568 181, UNIPHIER_PIN_PULL_DOWN),
571 UNIPHIER_PINCTRL_PIN(182, "A_D_PC0WE", UNIPHIER_PIN_IECTRL_NONE, 569 UNIPHIER_PINCTRL_PIN(182, "A_D_PC0WE", UNIPHIER_PIN_IECTRL_NONE,
572 -1, UNIPHIER_PIN_DRV_FIXED_8, 570 -1, UNIPHIER_PIN_DRV_FIXED8,
573 182, UNIPHIER_PIN_PULL_DOWN), 571 182, UNIPHIER_PIN_PULL_DOWN),
574 UNIPHIER_PINCTRL_PIN(183, "A_D_PC0OE", UNIPHIER_PIN_IECTRL_NONE, 572 UNIPHIER_PINCTRL_PIN(183, "A_D_PC0OE", UNIPHIER_PIN_IECTRL_NONE,
575 -1, UNIPHIER_PIN_DRV_FIXED_8, 573 -1, UNIPHIER_PIN_DRV_FIXED8,
576 183, UNIPHIER_PIN_PULL_DOWN), 574 183, UNIPHIER_PIN_PULL_DOWN),
577 UNIPHIER_PINCTRL_PIN(184, "A_D_PC0IOWR", UNIPHIER_PIN_IECTRL_NONE, 575 UNIPHIER_PINCTRL_PIN(184, "A_D_PC0IOWR", UNIPHIER_PIN_IECTRL_NONE,
578 -1, UNIPHIER_PIN_DRV_FIXED_8, 576 -1, UNIPHIER_PIN_DRV_FIXED8,
579 184, UNIPHIER_PIN_PULL_DOWN), 577 184, UNIPHIER_PIN_PULL_DOWN),
580 UNIPHIER_PINCTRL_PIN(185, "A_D_PC0IORD", UNIPHIER_PIN_IECTRL_NONE, 578 UNIPHIER_PINCTRL_PIN(185, "A_D_PC0IORD", UNIPHIER_PIN_IECTRL_NONE,
581 -1, UNIPHIER_PIN_DRV_FIXED_8, 579 -1, UNIPHIER_PIN_DRV_FIXED8,
582 185, UNIPHIER_PIN_PULL_DOWN), 580 185, UNIPHIER_PIN_PULL_DOWN),
583 UNIPHIER_PINCTRL_PIN(186, "A_D_PC0NOE", UNIPHIER_PIN_IECTRL_NONE, 581 UNIPHIER_PINCTRL_PIN(186, "A_D_PC0NOE", UNIPHIER_PIN_IECTRL_NONE,
584 -1, UNIPHIER_PIN_DRV_FIXED_8, 582 -1, UNIPHIER_PIN_DRV_FIXED8,
585 186, UNIPHIER_PIN_PULL_DOWN), 583 186, UNIPHIER_PIN_PULL_DOWN),
586 UNIPHIER_PINCTRL_PIN(187, "A_D_HS0BCLKIN", 0, 584 UNIPHIER_PINCTRL_PIN(187, "A_D_HS0BCLKIN", 0,
587 187, UNIPHIER_PIN_DRV_4_8, 585 187, UNIPHIER_PIN_DRV_1BIT,
588 187, UNIPHIER_PIN_PULL_DOWN), 586 187, UNIPHIER_PIN_PULL_DOWN),
589 UNIPHIER_PINCTRL_PIN(188, "A_D_HS0SYNCIN", 0, 587 UNIPHIER_PINCTRL_PIN(188, "A_D_HS0SYNCIN", 0,
590 188, UNIPHIER_PIN_DRV_4_8, 588 188, UNIPHIER_PIN_DRV_1BIT,
591 188, UNIPHIER_PIN_PULL_DOWN), 589 188, UNIPHIER_PIN_PULL_DOWN),
592 UNIPHIER_PINCTRL_PIN(189, "A_D_HS0VALIN", 0, 590 UNIPHIER_PINCTRL_PIN(189, "A_D_HS0VALIN", 0,
593 189, UNIPHIER_PIN_DRV_4_8, 591 189, UNIPHIER_PIN_DRV_1BIT,
594 189, UNIPHIER_PIN_PULL_DOWN), 592 189, UNIPHIER_PIN_PULL_DOWN),
595 UNIPHIER_PINCTRL_PIN(190, "A_D_HS0DIN0", 0, 593 UNIPHIER_PINCTRL_PIN(190, "A_D_HS0DIN0", 0,
596 190, UNIPHIER_PIN_DRV_4_8, 594 190, UNIPHIER_PIN_DRV_1BIT,
597 190, UNIPHIER_PIN_PULL_DOWN), 595 190, UNIPHIER_PIN_PULL_DOWN),
598 UNIPHIER_PINCTRL_PIN(191, "A_D_HS0DIN1", 0, 596 UNIPHIER_PINCTRL_PIN(191, "A_D_HS0DIN1", 0,
599 191, UNIPHIER_PIN_DRV_4_8, 597 191, UNIPHIER_PIN_DRV_1BIT,
600 191, UNIPHIER_PIN_PULL_DOWN), 598 191, UNIPHIER_PIN_PULL_DOWN),
601 UNIPHIER_PINCTRL_PIN(192, "A_D_HS0DIN2", 0, 599 UNIPHIER_PINCTRL_PIN(192, "A_D_HS0DIN2", 0,
602 192, UNIPHIER_PIN_DRV_4_8, 600 192, UNIPHIER_PIN_DRV_1BIT,
603 192, UNIPHIER_PIN_PULL_DOWN), 601 192, UNIPHIER_PIN_PULL_DOWN),
604 UNIPHIER_PINCTRL_PIN(193, "A_D_HS0DIN3", 0, 602 UNIPHIER_PINCTRL_PIN(193, "A_D_HS0DIN3", 0,
605 193, UNIPHIER_PIN_DRV_4_8, 603 193, UNIPHIER_PIN_DRV_1BIT,
606 193, UNIPHIER_PIN_PULL_DOWN), 604 193, UNIPHIER_PIN_PULL_DOWN),
607 UNIPHIER_PINCTRL_PIN(194, "A_D_HS0DIN4", 0, 605 UNIPHIER_PINCTRL_PIN(194, "A_D_HS0DIN4", 0,
608 194, UNIPHIER_PIN_DRV_4_8, 606 194, UNIPHIER_PIN_DRV_1BIT,
609 194, UNIPHIER_PIN_PULL_DOWN), 607 194, UNIPHIER_PIN_PULL_DOWN),
610 UNIPHIER_PINCTRL_PIN(195, "A_D_HS0DIN5", 0, 608 UNIPHIER_PINCTRL_PIN(195, "A_D_HS0DIN5", 0,
611 195, UNIPHIER_PIN_DRV_4_8, 609 195, UNIPHIER_PIN_DRV_1BIT,
612 195, UNIPHIER_PIN_PULL_DOWN), 610 195, UNIPHIER_PIN_PULL_DOWN),
613 UNIPHIER_PINCTRL_PIN(196, "A_D_HS0DIN6", 0, 611 UNIPHIER_PINCTRL_PIN(196, "A_D_HS0DIN6", 0,
614 196, UNIPHIER_PIN_DRV_4_8, 612 196, UNIPHIER_PIN_DRV_1BIT,
615 196, UNIPHIER_PIN_PULL_DOWN), 613 196, UNIPHIER_PIN_PULL_DOWN),
616 UNIPHIER_PINCTRL_PIN(197, "A_D_HS0DIN7", 0, 614 UNIPHIER_PINCTRL_PIN(197, "A_D_HS0DIN7", 0,
617 197, UNIPHIER_PIN_DRV_4_8, 615 197, UNIPHIER_PIN_DRV_1BIT,
618 197, UNIPHIER_PIN_PULL_DOWN), 616 197, UNIPHIER_PIN_PULL_DOWN),
619 UNIPHIER_PINCTRL_PIN(198, "A_D_AO1ARC", 0, 617 UNIPHIER_PINCTRL_PIN(198, "A_D_AO1ARC", 0,
620 198, UNIPHIER_PIN_DRV_4_8, 618 198, UNIPHIER_PIN_DRV_1BIT,
621 198, UNIPHIER_PIN_PULL_DOWN), 619 198, UNIPHIER_PIN_PULL_DOWN),
622 UNIPHIER_PINCTRL_PIN(199, "A_D_SPIXRST", UNIPHIER_PIN_IECTRL_NONE, 620 UNIPHIER_PINCTRL_PIN(199, "A_D_SPIXRST", UNIPHIER_PIN_IECTRL_NONE,
623 199, UNIPHIER_PIN_DRV_4_8, 621 199, UNIPHIER_PIN_DRV_1BIT,
624 199, UNIPHIER_PIN_PULL_DOWN), 622 199, UNIPHIER_PIN_PULL_DOWN),
625 UNIPHIER_PINCTRL_PIN(200, "A_D_SPISCLK0", UNIPHIER_PIN_IECTRL_NONE, 623 UNIPHIER_PINCTRL_PIN(200, "A_D_SPISCLK0", UNIPHIER_PIN_IECTRL_NONE,
626 200, UNIPHIER_PIN_DRV_4_8, 624 200, UNIPHIER_PIN_DRV_1BIT,
627 200, UNIPHIER_PIN_PULL_DOWN), 625 200, UNIPHIER_PIN_PULL_DOWN),
628 UNIPHIER_PINCTRL_PIN(201, "A_D_SPITXD0", UNIPHIER_PIN_IECTRL_NONE, 626 UNIPHIER_PINCTRL_PIN(201, "A_D_SPITXD0", UNIPHIER_PIN_IECTRL_NONE,
629 201, UNIPHIER_PIN_DRV_4_8, 627 201, UNIPHIER_PIN_DRV_1BIT,
630 201, UNIPHIER_PIN_PULL_DOWN), 628 201, UNIPHIER_PIN_PULL_DOWN),
631 UNIPHIER_PINCTRL_PIN(202, "A_D_SPIRXD0", UNIPHIER_PIN_IECTRL_NONE, 629 UNIPHIER_PINCTRL_PIN(202, "A_D_SPIRXD0", UNIPHIER_PIN_IECTRL_NONE,
632 202, UNIPHIER_PIN_DRV_4_8, 630 202, UNIPHIER_PIN_DRV_1BIT,
633 202, UNIPHIER_PIN_PULL_DOWN), 631 202, UNIPHIER_PIN_PULL_DOWN),
634 UNIPHIER_PINCTRL_PIN(203, "A_D_DMDCLK", UNIPHIER_PIN_IECTRL_NONE, 632 UNIPHIER_PINCTRL_PIN(203, "A_D_DMDCLK", UNIPHIER_PIN_IECTRL_NONE,
635 -1, UNIPHIER_PIN_DRV_FIXED_8, 633 -1, UNIPHIER_PIN_DRV_FIXED8,
636 203, UNIPHIER_PIN_PULL_DOWN), 634 203, UNIPHIER_PIN_PULL_DOWN),
637 UNIPHIER_PINCTRL_PIN(204, "A_D_DMDPSYNC", UNIPHIER_PIN_IECTRL_NONE, 635 UNIPHIER_PINCTRL_PIN(204, "A_D_DMDPSYNC", UNIPHIER_PIN_IECTRL_NONE,
638 -1, UNIPHIER_PIN_DRV_FIXED_8, 636 -1, UNIPHIER_PIN_DRV_FIXED8,
639 204, UNIPHIER_PIN_PULL_DOWN), 637 204, UNIPHIER_PIN_PULL_DOWN),
640 UNIPHIER_PINCTRL_PIN(205, "A_D_DMDVAL", UNIPHIER_PIN_IECTRL_NONE, 638 UNIPHIER_PINCTRL_PIN(205, "A_D_DMDVAL", UNIPHIER_PIN_IECTRL_NONE,
641 -1, UNIPHIER_PIN_DRV_FIXED_8, 639 -1, UNIPHIER_PIN_DRV_FIXED8,
642 205, UNIPHIER_PIN_PULL_DOWN), 640 205, UNIPHIER_PIN_PULL_DOWN),
643 UNIPHIER_PINCTRL_PIN(206, "A_D_DMDDATA", UNIPHIER_PIN_IECTRL_NONE, 641 UNIPHIER_PINCTRL_PIN(206, "A_D_DMDDATA", UNIPHIER_PIN_IECTRL_NONE,
644 -1, UNIPHIER_PIN_DRV_FIXED_8, 642 -1, UNIPHIER_PIN_DRV_FIXED8,
645 206, UNIPHIER_PIN_PULL_DOWN), 643 206, UNIPHIER_PIN_PULL_DOWN),
646 UNIPHIER_PINCTRL_PIN(207, "A_D_HDMIRXXIRQ", 0, 644 UNIPHIER_PINCTRL_PIN(207, "A_D_HDMIRXXIRQ", 0,
647 207, UNIPHIER_PIN_DRV_4_8, 645 207, UNIPHIER_PIN_DRV_1BIT,
648 207, UNIPHIER_PIN_PULL_DOWN), 646 207, UNIPHIER_PIN_PULL_DOWN),
649 UNIPHIER_PINCTRL_PIN(208, "A_D_VBIXIRQ", 0, 647 UNIPHIER_PINCTRL_PIN(208, "A_D_VBIXIRQ", 0,
650 208, UNIPHIER_PIN_DRV_4_8, 648 208, UNIPHIER_PIN_DRV_1BIT,
651 208, UNIPHIER_PIN_PULL_DOWN), 649 208, UNIPHIER_PIN_PULL_DOWN),
652 UNIPHIER_PINCTRL_PIN(209, "A_D_HDMITXXIRQ", 0, 650 UNIPHIER_PINCTRL_PIN(209, "A_D_HDMITXXIRQ", 0,
653 209, UNIPHIER_PIN_DRV_4_8, 651 209, UNIPHIER_PIN_DRV_1BIT,
654 209, UNIPHIER_PIN_PULL_DOWN), 652 209, UNIPHIER_PIN_PULL_DOWN),
655 UNIPHIER_PINCTRL_PIN(210, "A_D_DMDIRQ", UNIPHIER_PIN_IECTRL_NONE, 653 UNIPHIER_PINCTRL_PIN(210, "A_D_DMDIRQ", UNIPHIER_PIN_IECTRL_NONE,
656 210, UNIPHIER_PIN_DRV_4_8, 654 210, UNIPHIER_PIN_DRV_1BIT,
657 210, UNIPHIER_PIN_PULL_DOWN), 655 210, UNIPHIER_PIN_PULL_DOWN),
658 UNIPHIER_PINCTRL_PIN(211, "A_D_SPICIRQ", UNIPHIER_PIN_IECTRL_NONE, 656 UNIPHIER_PINCTRL_PIN(211, "A_D_SPICIRQ", UNIPHIER_PIN_IECTRL_NONE,
659 211, UNIPHIER_PIN_DRV_4_8, 657 211, UNIPHIER_PIN_DRV_1BIT,
660 211, UNIPHIER_PIN_PULL_DOWN), 658 211, UNIPHIER_PIN_PULL_DOWN),
661 UNIPHIER_PINCTRL_PIN(212, "A_D_SPIBIRQ", UNIPHIER_PIN_IECTRL_NONE, 659 UNIPHIER_PINCTRL_PIN(212, "A_D_SPIBIRQ", UNIPHIER_PIN_IECTRL_NONE,
662 212, UNIPHIER_PIN_DRV_4_8, 660 212, UNIPHIER_PIN_DRV_1BIT,
663 212, UNIPHIER_PIN_PULL_DOWN), 661 212, UNIPHIER_PIN_PULL_DOWN),
664 UNIPHIER_PINCTRL_PIN(213, "A_D_BESDAOUT", UNIPHIER_PIN_IECTRL_NONE, 662 UNIPHIER_PINCTRL_PIN(213, "A_D_BESDAOUT", UNIPHIER_PIN_IECTRL_NONE,
665 -1, UNIPHIER_PIN_DRV_FIXED_4, 663 -1, UNIPHIER_PIN_DRV_FIXED4,
666 213, UNIPHIER_PIN_PULL_DOWN), 664 213, UNIPHIER_PIN_PULL_DOWN),
667 UNIPHIER_PINCTRL_PIN(214, "A_D_BESDAIN", UNIPHIER_PIN_IECTRL_NONE, 665 UNIPHIER_PINCTRL_PIN(214, "A_D_BESDAIN", UNIPHIER_PIN_IECTRL_NONE,
668 -1, UNIPHIER_PIN_DRV_FIXED_4, 666 -1, UNIPHIER_PIN_DRV_FIXED4,
669 214, UNIPHIER_PIN_PULL_DOWN), 667 214, UNIPHIER_PIN_PULL_DOWN),
670 UNIPHIER_PINCTRL_PIN(215, "A_D_BESCLOUT", UNIPHIER_PIN_IECTRL_NONE, 668 UNIPHIER_PINCTRL_PIN(215, "A_D_BESCLOUT", UNIPHIER_PIN_IECTRL_NONE,
671 215, UNIPHIER_PIN_DRV_4_8, 669 215, UNIPHIER_PIN_DRV_1BIT,
672 215, UNIPHIER_PIN_PULL_DOWN), 670 215, UNIPHIER_PIN_PULL_DOWN),
673 UNIPHIER_PINCTRL_PIN(216, "A_D_VDACCLKOUT", 0, 671 UNIPHIER_PINCTRL_PIN(216, "A_D_VDACCLKOUT", 0,
674 216, UNIPHIER_PIN_DRV_4_8, 672 216, UNIPHIER_PIN_DRV_1BIT,
675 216, UNIPHIER_PIN_PULL_DOWN), 673 216, UNIPHIER_PIN_PULL_DOWN),
676 UNIPHIER_PINCTRL_PIN(217, "A_D_VDACDOUT5", 0, 674 UNIPHIER_PINCTRL_PIN(217, "A_D_VDACDOUT5", 0,
677 217, UNIPHIER_PIN_DRV_4_8, 675 217, UNIPHIER_PIN_DRV_1BIT,
678 217, UNIPHIER_PIN_PULL_DOWN), 676 217, UNIPHIER_PIN_PULL_DOWN),
679 UNIPHIER_PINCTRL_PIN(218, "A_D_VDACDOUT6", 0, 677 UNIPHIER_PINCTRL_PIN(218, "A_D_VDACDOUT6", 0,
680 218, UNIPHIER_PIN_DRV_4_8, 678 218, UNIPHIER_PIN_DRV_1BIT,
681 218, UNIPHIER_PIN_PULL_DOWN), 679 218, UNIPHIER_PIN_PULL_DOWN),
682 UNIPHIER_PINCTRL_PIN(219, "A_D_VDACDOUT7", 0, 680 UNIPHIER_PINCTRL_PIN(219, "A_D_VDACDOUT7", 0,
683 219, UNIPHIER_PIN_DRV_4_8, 681 219, UNIPHIER_PIN_DRV_1BIT,
684 219, UNIPHIER_PIN_PULL_DOWN), 682 219, UNIPHIER_PIN_PULL_DOWN),
685 UNIPHIER_PINCTRL_PIN(220, "A_D_VDACDOUT8", 0, 683 UNIPHIER_PINCTRL_PIN(220, "A_D_VDACDOUT8", 0,
686 220, UNIPHIER_PIN_DRV_4_8, 684 220, UNIPHIER_PIN_DRV_1BIT,
687 220, UNIPHIER_PIN_PULL_DOWN), 685 220, UNIPHIER_PIN_PULL_DOWN),
688 UNIPHIER_PINCTRL_PIN(221, "A_D_VDACDOUT9", 0, 686 UNIPHIER_PINCTRL_PIN(221, "A_D_VDACDOUT9", 0,
689 221, UNIPHIER_PIN_DRV_4_8, 687 221, UNIPHIER_PIN_DRV_1BIT,
690 221, UNIPHIER_PIN_PULL_DOWN), 688 221, UNIPHIER_PIN_PULL_DOWN),
691 UNIPHIER_PINCTRL_PIN(222, "A_D_SIFBCKIN", 0, 689 UNIPHIER_PINCTRL_PIN(222, "A_D_SIFBCKIN", 0,
692 222, UNIPHIER_PIN_DRV_4_8, 690 222, UNIPHIER_PIN_DRV_1BIT,
693 222, UNIPHIER_PIN_PULL_DOWN), 691 222, UNIPHIER_PIN_PULL_DOWN),
694 UNIPHIER_PINCTRL_PIN(223, "A_D_SIFLRCKIN", 0, 692 UNIPHIER_PINCTRL_PIN(223, "A_D_SIFLRCKIN", 0,
695 223, UNIPHIER_PIN_DRV_4_8, 693 223, UNIPHIER_PIN_DRV_1BIT,
696 223, UNIPHIER_PIN_PULL_DOWN), 694 223, UNIPHIER_PIN_PULL_DOWN),
697 UNIPHIER_PINCTRL_PIN(224, "A_D_SIFDIN", 0, 695 UNIPHIER_PINCTRL_PIN(224, "A_D_SIFDIN", 0,
698 224, UNIPHIER_PIN_DRV_4_8, 696 224, UNIPHIER_PIN_DRV_1BIT,
699 224, UNIPHIER_PIN_PULL_DOWN), 697 224, UNIPHIER_PIN_PULL_DOWN),
700 UNIPHIER_PINCTRL_PIN(225, "A_D_LIBCKOUT", 0, 698 UNIPHIER_PINCTRL_PIN(225, "A_D_LIBCKOUT", 0,
701 225, UNIPHIER_PIN_DRV_4_8, 699 225, UNIPHIER_PIN_DRV_1BIT,
702 225, UNIPHIER_PIN_PULL_DOWN), 700 225, UNIPHIER_PIN_PULL_DOWN),
703 UNIPHIER_PINCTRL_PIN(226, "A_D_LILRCKOUT", 0, 701 UNIPHIER_PINCTRL_PIN(226, "A_D_LILRCKOUT", 0,
704 226, UNIPHIER_PIN_DRV_4_8, 702 226, UNIPHIER_PIN_DRV_1BIT,
705 226, UNIPHIER_PIN_PULL_DOWN), 703 226, UNIPHIER_PIN_PULL_DOWN),
706 UNIPHIER_PINCTRL_PIN(227, "A_D_LIDIN", 0, 704 UNIPHIER_PINCTRL_PIN(227, "A_D_LIDIN", 0,
707 227, UNIPHIER_PIN_DRV_4_8, 705 227, UNIPHIER_PIN_DRV_1BIT,
708 227, UNIPHIER_PIN_PULL_DOWN), 706 227, UNIPHIER_PIN_PULL_DOWN),
709 UNIPHIER_PINCTRL_PIN(228, "A_D_LODOUT", 0, 707 UNIPHIER_PINCTRL_PIN(228, "A_D_LODOUT", 0,
710 228, UNIPHIER_PIN_DRV_4_8, 708 228, UNIPHIER_PIN_DRV_1BIT,
711 228, UNIPHIER_PIN_PULL_DOWN), 709 228, UNIPHIER_PIN_PULL_DOWN),
712 UNIPHIER_PINCTRL_PIN(229, "A_D_HPDOUT", 0, 710 UNIPHIER_PINCTRL_PIN(229, "A_D_HPDOUT", 0,
713 229, UNIPHIER_PIN_DRV_4_8, 711 229, UNIPHIER_PIN_DRV_1BIT,
714 229, UNIPHIER_PIN_PULL_DOWN), 712 229, UNIPHIER_PIN_PULL_DOWN),
715 UNIPHIER_PINCTRL_PIN(230, "A_D_MCLK", 0, 713 UNIPHIER_PINCTRL_PIN(230, "A_D_MCLK", 0,
716 230, UNIPHIER_PIN_DRV_4_8, 714 230, UNIPHIER_PIN_DRV_1BIT,
717 230, UNIPHIER_PIN_PULL_DOWN), 715 230, UNIPHIER_PIN_PULL_DOWN),
718 UNIPHIER_PINCTRL_PIN(231, "A_D_A2PLLREFOUT", 0, 716 UNIPHIER_PINCTRL_PIN(231, "A_D_A2PLLREFOUT", 0,
719 231, UNIPHIER_PIN_DRV_4_8, 717 231, UNIPHIER_PIN_DRV_1BIT,
720 231, UNIPHIER_PIN_PULL_DOWN), 718 231, UNIPHIER_PIN_PULL_DOWN),
721 UNIPHIER_PINCTRL_PIN(232, "A_D_HDMI3DSDAOUT", 0, 719 UNIPHIER_PINCTRL_PIN(232, "A_D_HDMI3DSDAOUT", 0,
722 232, UNIPHIER_PIN_DRV_4_8, 720 232, UNIPHIER_PIN_DRV_1BIT,
723 232, UNIPHIER_PIN_PULL_DOWN), 721 232, UNIPHIER_PIN_PULL_DOWN),
724 UNIPHIER_PINCTRL_PIN(233, "A_D_HDMI3DSDAIN", 0, 722 UNIPHIER_PINCTRL_PIN(233, "A_D_HDMI3DSDAIN", 0,
725 233, UNIPHIER_PIN_DRV_4_8, 723 233, UNIPHIER_PIN_DRV_1BIT,
726 233, UNIPHIER_PIN_PULL_DOWN), 724 233, UNIPHIER_PIN_PULL_DOWN),
727 UNIPHIER_PINCTRL_PIN(234, "A_D_HDMI3DSCLIN", 0, 725 UNIPHIER_PINCTRL_PIN(234, "A_D_HDMI3DSCLIN", 0,
728 234, UNIPHIER_PIN_DRV_4_8, 726 234, UNIPHIER_PIN_DRV_1BIT,
729 234, UNIPHIER_PIN_PULL_DOWN), 727 234, UNIPHIER_PIN_PULL_DOWN),
730}; 728};
731 729
@@ -737,52 +735,73 @@ static const unsigned adinter_pins[] = {
737 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 735 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
738 229, 230, 231, 232, 233, 234, 736 229, 230, 231, 232, 233, 234,
739}; 737};
740static const unsigned adinter_muxvals[] = { 738static const int adinter_muxvals[] = {
741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
744 0, 0, 0, 0, 742 0, 0, 0, 0,
745}; 743};
746static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; 744static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
747static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 745static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
748static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; 746static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
749static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 747static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
748static const unsigned ether_rgmii_pins[] = {143, 144, 145, 146, 147, 148, 149,
749 150, 151, 152, 153, 154, 155, 156,
750 157, 158};
751static const int ether_rgmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0};
753static const unsigned ether_rmii_pins[] = {143, 144, 145, 146, 147, 148, 149,
754 150, 152, 154, 155, 158};
755static const int ether_rmii_muxvals[] = {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1};
750static const unsigned i2c0_pins[] = {109, 110}; 756static const unsigned i2c0_pins[] = {109, 110};
751static const unsigned i2c0_muxvals[] = {0, 0}; 757static const int i2c0_muxvals[] = {0, 0};
752static const unsigned i2c1_pins[] = {111, 112}; 758static const unsigned i2c1_pins[] = {111, 112};
753static const unsigned i2c1_muxvals[] = {0, 0}; 759static const int i2c1_muxvals[] = {0, 0};
754static const unsigned i2c2_pins[] = {115, 116}; 760static const unsigned i2c2_pins[] = {115, 116};
755static const unsigned i2c2_muxvals[] = {1, 1}; 761static const int i2c2_muxvals[] = {1, 1};
756static const unsigned i2c3_pins[] = {118, 119}; 762static const unsigned i2c3_pins[] = {118, 119};
757static const unsigned i2c3_muxvals[] = {1, 1}; 763static const int i2c3_muxvals[] = {1, 1};
758static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41, 764static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41,
759 42, 43, 44, 45, 46}; 765 42, 43, 44, 45, 46};
760static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 766static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
761 0, 0};
762static const unsigned nand_cs1_pins[] = {37, 38}; 767static const unsigned nand_cs1_pins[] = {37, 38};
763static const unsigned nand_cs1_muxvals[] = {0, 0}; 768static const int nand_cs1_muxvals[] = {0, 0};
764static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55}; 769static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
765static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 770static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
771static const unsigned system_bus_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
772 11, 12, 13};
773static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
774 0};
775static const unsigned system_bus_cs1_pins[] = {14};
776static const int system_bus_cs1_muxvals[] = {0};
777static const unsigned system_bus_cs2_pins[] = {37};
778static const int system_bus_cs2_muxvals[] = {6};
779static const unsigned system_bus_cs3_pins[] = {38};
780static const int system_bus_cs3_muxvals[] = {6};
781static const unsigned system_bus_cs4_pins[] = {115};
782static const int system_bus_cs4_muxvals[] = {6};
783static const unsigned system_bus_cs5_pins[] = {55};
784static const int system_bus_cs5_muxvals[] = {6};
766static const unsigned uart0_pins[] = {135, 136}; 785static const unsigned uart0_pins[] = {135, 136};
767static const unsigned uart0_muxvals[] = {3, 3}; 786static const int uart0_muxvals[] = {3, 3};
768static const unsigned uart0b_pins[] = {11, 12}; 787static const unsigned uart0b_pins[] = {11, 12};
769static const unsigned uart0b_muxvals[] = {2, 2}; 788static const int uart0b_muxvals[] = {2, 2};
770static const unsigned uart1_pins[] = {115, 116}; 789static const unsigned uart1_pins[] = {115, 116};
771static const unsigned uart1_muxvals[] = {0, 0}; 790static const int uart1_muxvals[] = {0, 0};
772static const unsigned uart1b_pins[] = {113, 114}; 791static const unsigned uart1b_pins[] = {113, 114};
773static const unsigned uart1b_muxvals[] = {1, 1}; 792static const int uart1b_muxvals[] = {1, 1};
774static const unsigned uart2_pins[] = {113, 114}; 793static const unsigned uart2_pins[] = {113, 114};
775static const unsigned uart2_muxvals[] = {2, 2}; 794static const int uart2_muxvals[] = {2, 2};
776static const unsigned uart2b_pins[] = {86, 87}; 795static const unsigned uart2b_pins[] = {86, 87};
777static const unsigned uart2b_muxvals[] = {1, 1}; 796static const int uart2b_muxvals[] = {1, 1};
778static const unsigned usb0_pins[] = {56, 57}; 797static const unsigned usb0_pins[] = {56, 57};
779static const unsigned usb0_muxvals[] = {0, 0}; 798static const int usb0_muxvals[] = {0, 0};
780static const unsigned usb1_pins[] = {58, 59}; 799static const unsigned usb1_pins[] = {58, 59};
781static const unsigned usb1_muxvals[] = {0, 0}; 800static const int usb1_muxvals[] = {0, 0};
782static const unsigned usb2_pins[] = {60, 61}; 801static const unsigned usb2_pins[] = {60, 61};
783static const unsigned usb2_muxvals[] = {0, 0}; 802static const int usb2_muxvals[] = {0, 0};
784static const unsigned usb3_pins[] = {62, 63}; 803static const unsigned usb3_pins[] = {62, 63};
785static const unsigned usb3_muxvals[] = {0, 0}; 804static const int usb3_muxvals[] = {0, 0};
786static const unsigned port_range0_pins[] = { 805static const unsigned port_range0_pins[] = {
787 127, 128, 129, 130, 131, 132, 133, 134, /* PORT0x */ 806 127, 128, 129, 130, 131, 132, 133, 134, /* PORT0x */
788 135, 136, 137, 138, 139, 140, 141, 142, /* PORT1x */ 807 135, 136, 137, 138, 139, 140, 141, 142, /* PORT1x */
@@ -796,7 +815,7 @@ static const unsigned port_range0_pins[] = {
796 61, 62, 63, 64, 65, 66, 67, 68, /* PORT9x */ 815 61, 62, 63, 64, 65, 66, 67, 68, /* PORT9x */
797 69, 70, 71, 76, 77, 78, 79, 80, /* PORT10x */ 816 69, 70, 71, 76, 77, 78, 79, 80, /* PORT10x */
798}; 817};
799static const unsigned port_range0_muxvals[] = { 818static const int port_range0_muxvals[] = {
800 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 819 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */
801 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 820 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */
802 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ 821 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */
@@ -828,7 +847,7 @@ static const unsigned port_range1_pins[] = {
828 218, 219, 220, 221, 223, 224, 225, 226, /* PORT27x */ 847 218, 219, 220, 221, 223, 224, 225, 226, /* PORT27x */
829 227, 228, 229, 230, 231, 232, 233, 234, /* PORT28x */ 848 227, 228, 229, 230, 231, 232, 233, 234, /* PORT28x */
830}; 849};
831static const unsigned port_range1_muxvals[] = { 850static const int port_range1_muxvals[] = {
832 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */ 851 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */
833 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */ 852 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */
834 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */ 853 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */
@@ -852,16 +871,18 @@ static const unsigned xirq_pins[] = {
852 126, 72, 73, 92, 177, 93, 94, 176, /* XIRQ8-15 */ 871 126, 72, 73, 92, 177, 93, 94, 176, /* XIRQ8-15 */
853 74, 91, 27, 28, 29, 75, 20, 26, /* XIRQ16-23 */ 872 74, 91, 27, 28, 29, 75, 20, 26, /* XIRQ16-23 */
854}; 873};
855static const unsigned xirq_muxvals[] = { 874static const int xirq_muxvals[] = {
856 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */ 875 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */
857 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */ 876 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */
858 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */ 877 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */
859}; 878};
860 879
861static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = { 880static const struct uniphier_pinctrl_group uniphier_ld6b_groups[] = {
862 UNIPHIER_PINCTRL_GROUP(adinter), 881 UNIPHIER_PINCTRL_GROUP(adinter),
863 UNIPHIER_PINCTRL_GROUP(emmc), 882 UNIPHIER_PINCTRL_GROUP(emmc),
864 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 883 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
884 UNIPHIER_PINCTRL_GROUP(ether_rgmii),
885 UNIPHIER_PINCTRL_GROUP(ether_rmii),
865 UNIPHIER_PINCTRL_GROUP(i2c0), 886 UNIPHIER_PINCTRL_GROUP(i2c0),
866 UNIPHIER_PINCTRL_GROUP(i2c1), 887 UNIPHIER_PINCTRL_GROUP(i2c1),
867 UNIPHIER_PINCTRL_GROUP(i2c2), 888 UNIPHIER_PINCTRL_GROUP(i2c2),
@@ -869,6 +890,12 @@ static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = {
869 UNIPHIER_PINCTRL_GROUP(nand), 890 UNIPHIER_PINCTRL_GROUP(nand),
870 UNIPHIER_PINCTRL_GROUP(nand_cs1), 891 UNIPHIER_PINCTRL_GROUP(nand_cs1),
871 UNIPHIER_PINCTRL_GROUP(sd), 892 UNIPHIER_PINCTRL_GROUP(sd),
893 UNIPHIER_PINCTRL_GROUP(system_bus),
894 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
895 UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
896 UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
897 UNIPHIER_PINCTRL_GROUP(system_bus_cs4),
898 UNIPHIER_PINCTRL_GROUP(system_bus_cs5),
872 UNIPHIER_PINCTRL_GROUP(uart0), 899 UNIPHIER_PINCTRL_GROUP(uart0),
873 UNIPHIER_PINCTRL_GROUP(uart0b), 900 UNIPHIER_PINCTRL_GROUP(uart0b),
874 UNIPHIER_PINCTRL_GROUP(uart1), 901 UNIPHIER_PINCTRL_GROUP(uart1),
@@ -1134,12 +1161,20 @@ static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = {
1134 1161
1135static const char * const adinter_groups[] = {"adinter"}; 1162static const char * const adinter_groups[] = {"adinter"};
1136static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 1163static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
1164static const char * const ether_rgmii_groups[] = {"ether_rgmii"};
1165static const char * const ether_rmii_groups[] = {"ether_rmii"};
1137static const char * const i2c0_groups[] = {"i2c0"}; 1166static const char * const i2c0_groups[] = {"i2c0"};
1138static const char * const i2c1_groups[] = {"i2c1"}; 1167static const char * const i2c1_groups[] = {"i2c1"};
1139static const char * const i2c2_groups[] = {"i2c2"}; 1168static const char * const i2c2_groups[] = {"i2c2"};
1140static const char * const i2c3_groups[] = {"i2c3"}; 1169static const char * const i2c3_groups[] = {"i2c3"};
1141static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1170static const char * const nand_groups[] = {"nand", "nand_cs1"};
1142static const char * const sd_groups[] = {"sd"}; 1171static const char * const sd_groups[] = {"sd"};
1172static const char * const system_bus_groups[] = {"system_bus",
1173 "system_bus_cs1",
1174 "system_bus_cs2",
1175 "system_bus_cs3",
1176 "system_bus_cs4",
1177 "system_bus_cs5"};
1143static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1178static const char * const uart0_groups[] = {"uart0", "uart0b"};
1144static const char * const uart1_groups[] = {"uart1", "uart1b"}; 1179static const char * const uart1_groups[] = {"uart1", "uart1b"};
1145static const char * const uart2_groups[] = {"uart2", "uart2b"}; 1180static const char * const uart2_groups[] = {"uart2", "uart2b"};
@@ -1215,15 +1250,18 @@ static const char * const xirq_groups[] = {
1215 "xirq20", "xirq21", "xirq22", "xirq23", 1250 "xirq20", "xirq21", "xirq22", "xirq23",
1216}; 1251};
1217 1252
1218static const struct uniphier_pinmux_function ph1_ld6b_functions[] = { 1253static const struct uniphier_pinmux_function uniphier_ld6b_functions[] = {
1219 UNIPHIER_PINMUX_FUNCTION(adinter), /* Achip-Dchip interconnect */ 1254 UNIPHIER_PINMUX_FUNCTION(adinter), /* Achip-Dchip interconnect */
1220 UNIPHIER_PINMUX_FUNCTION(emmc), 1255 UNIPHIER_PINMUX_FUNCTION(emmc),
1256 UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
1257 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
1221 UNIPHIER_PINMUX_FUNCTION(i2c0), 1258 UNIPHIER_PINMUX_FUNCTION(i2c0),
1222 UNIPHIER_PINMUX_FUNCTION(i2c1), 1259 UNIPHIER_PINMUX_FUNCTION(i2c1),
1223 UNIPHIER_PINMUX_FUNCTION(i2c2), 1260 UNIPHIER_PINMUX_FUNCTION(i2c2),
1224 UNIPHIER_PINMUX_FUNCTION(i2c3), 1261 UNIPHIER_PINMUX_FUNCTION(i2c3),
1225 UNIPHIER_PINMUX_FUNCTION(nand), 1262 UNIPHIER_PINMUX_FUNCTION(nand),
1226 UNIPHIER_PINMUX_FUNCTION(sd), 1263 UNIPHIER_PINMUX_FUNCTION(sd),
1264 UNIPHIER_PINMUX_FUNCTION(system_bus),
1227 UNIPHIER_PINMUX_FUNCTION(uart0), 1265 UNIPHIER_PINMUX_FUNCTION(uart0),
1228 UNIPHIER_PINMUX_FUNCTION(uart1), 1266 UNIPHIER_PINMUX_FUNCTION(uart1),
1229 UNIPHIER_PINMUX_FUNCTION(uart2), 1267 UNIPHIER_PINMUX_FUNCTION(uart2),
@@ -1235,43 +1273,36 @@ static const struct uniphier_pinmux_function ph1_ld6b_functions[] = {
1235 UNIPHIER_PINMUX_FUNCTION(xirq), 1273 UNIPHIER_PINMUX_FUNCTION(xirq),
1236}; 1274};
1237 1275
1238static struct uniphier_pinctrl_socdata ph1_ld6b_pindata = { 1276static struct uniphier_pinctrl_socdata uniphier_ld6b_pindata = {
1239 .groups = ph1_ld6b_groups, 1277 .pins = uniphier_ld6b_pins,
1240 .groups_count = ARRAY_SIZE(ph1_ld6b_groups), 1278 .npins = ARRAY_SIZE(uniphier_ld6b_pins),
1241 .functions = ph1_ld6b_functions, 1279 .groups = uniphier_ld6b_groups,
1242 .functions_count = ARRAY_SIZE(ph1_ld6b_functions), 1280 .groups_count = ARRAY_SIZE(uniphier_ld6b_groups),
1243 .mux_bits = 8, 1281 .functions = uniphier_ld6b_functions,
1244 .reg_stride = 4, 1282 .functions_count = ARRAY_SIZE(uniphier_ld6b_functions),
1245 .load_pinctrl = false, 1283 .caps = 0,
1246};
1247
1248static struct pinctrl_desc ph1_ld6b_pinctrl_desc = {
1249 .name = DRIVER_NAME,
1250 .pins = ph1_ld6b_pins,
1251 .npins = ARRAY_SIZE(ph1_ld6b_pins),
1252 .owner = THIS_MODULE,
1253}; 1284};
1254 1285
1255static int ph1_ld6b_pinctrl_probe(struct platform_device *pdev) 1286static int uniphier_ld6b_pinctrl_probe(struct platform_device *pdev)
1256{ 1287{
1257 return uniphier_pinctrl_probe(pdev, &ph1_ld6b_pinctrl_desc, 1288 return uniphier_pinctrl_probe(pdev, &uniphier_ld6b_pindata);
1258 &ph1_ld6b_pindata);
1259} 1289}
1260 1290
1261static const struct of_device_id ph1_ld6b_pinctrl_match[] = { 1291static const struct of_device_id uniphier_ld6b_pinctrl_match[] = {
1292 { .compatible = "socionext,uniphier-ld6b-pinctrl" },
1262 { .compatible = "socionext,ph1-ld6b-pinctrl" }, 1293 { .compatible = "socionext,ph1-ld6b-pinctrl" },
1263 { /* sentinel */ } 1294 { /* sentinel */ }
1264}; 1295};
1265MODULE_DEVICE_TABLE(of, ph1_ld6b_pinctrl_match); 1296MODULE_DEVICE_TABLE(of, uniphier_ld6b_pinctrl_match);
1266 1297
1267static struct platform_driver ph1_ld6b_pinctrl_driver = { 1298static struct platform_driver uniphier_ld6b_pinctrl_driver = {
1268 .probe = ph1_ld6b_pinctrl_probe, 1299 .probe = uniphier_ld6b_pinctrl_probe,
1269 .driver = { 1300 .driver = {
1270 .name = DRIVER_NAME, 1301 .name = "uniphier-ld6b-pinctrl",
1271 .of_match_table = ph1_ld6b_pinctrl_match, 1302 .of_match_table = uniphier_ld6b_pinctrl_match,
1272 }, 1303 },
1273}; 1304};
1274module_platform_driver(ph1_ld6b_pinctrl_driver); 1305module_platform_driver(uniphier_ld6b_pinctrl_driver);
1275 1306
1276MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1307MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
1277MODULE_DESCRIPTION("UniPhier PH1-LD6b pinctrl driver"); 1308MODULE_DESCRIPTION("UniPhier PH1-LD6b pinctrl driver");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
index b1f09e68f90e..c306e844f584 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
@@ -19,1039 +19,1072 @@
19 19
20#include "pinctrl-uniphier.h" 20#include "pinctrl-uniphier.h"
21 21
22#define DRIVER_NAME "ph1-pro4-pinctrl" 22static const struct pinctrl_pin_desc uniphier_pro4_pins[] = {
23
24static const struct pinctrl_pin_desc ph1_pro4_pins[] = {
25 UNIPHIER_PINCTRL_PIN(0, "CK24O", UNIPHIER_PIN_IECTRL_NONE, 23 UNIPHIER_PINCTRL_PIN(0, "CK24O", UNIPHIER_PIN_IECTRL_NONE,
26 0, UNIPHIER_PIN_DRV_4_8, 24 0, UNIPHIER_PIN_DRV_1BIT,
27 0, UNIPHIER_PIN_PULL_DOWN), 25 0, UNIPHIER_PIN_PULL_DOWN),
28 UNIPHIER_PINCTRL_PIN(1, "VC27A", UNIPHIER_PIN_IECTRL_NONE, 26 UNIPHIER_PINCTRL_PIN(1, "VC27A", UNIPHIER_PIN_IECTRL_NONE,
29 1, UNIPHIER_PIN_DRV_4_8, 27 1, UNIPHIER_PIN_DRV_1BIT,
30 1, UNIPHIER_PIN_PULL_DOWN), 28 1, UNIPHIER_PIN_PULL_DOWN),
31 UNIPHIER_PINCTRL_PIN(2, "CK27AI", UNIPHIER_PIN_IECTRL_NONE, 29 UNIPHIER_PINCTRL_PIN(2, "CK27AI", UNIPHIER_PIN_IECTRL_NONE,
32 2, UNIPHIER_PIN_DRV_4_8, 30 2, UNIPHIER_PIN_DRV_1BIT,
33 2, UNIPHIER_PIN_PULL_DOWN), 31 2, UNIPHIER_PIN_PULL_DOWN),
34 UNIPHIER_PINCTRL_PIN(3, "CK27AO", UNIPHIER_PIN_IECTRL_NONE, 32 UNIPHIER_PINCTRL_PIN(3, "CK27AO", UNIPHIER_PIN_IECTRL_NONE,
35 3, UNIPHIER_PIN_DRV_4_8, 33 3, UNIPHIER_PIN_DRV_1BIT,
36 3, UNIPHIER_PIN_PULL_DOWN), 34 3, UNIPHIER_PIN_PULL_DOWN),
37 UNIPHIER_PINCTRL_PIN(4, "CKSEL", UNIPHIER_PIN_IECTRL_NONE, 35 UNIPHIER_PINCTRL_PIN(4, "CKSEL", UNIPHIER_PIN_IECTRL_NONE,
38 4, UNIPHIER_PIN_DRV_4_8, 36 4, UNIPHIER_PIN_DRV_1BIT,
39 4, UNIPHIER_PIN_PULL_UP), 37 4, UNIPHIER_PIN_PULL_UP),
40 UNIPHIER_PINCTRL_PIN(5, "CK27AV", UNIPHIER_PIN_IECTRL_NONE, 38 UNIPHIER_PINCTRL_PIN(5, "CK27AV", UNIPHIER_PIN_IECTRL_NONE,
41 5, UNIPHIER_PIN_DRV_4_8, 39 5, UNIPHIER_PIN_DRV_1BIT,
42 5, UNIPHIER_PIN_PULL_DOWN), 40 5, UNIPHIER_PIN_PULL_DOWN),
43 UNIPHIER_PINCTRL_PIN(6, "AEXCKA", UNIPHIER_PIN_IECTRL_NONE, 41 UNIPHIER_PINCTRL_PIN(6, "AEXCKA", UNIPHIER_PIN_IECTRL_NONE,
44 6, UNIPHIER_PIN_DRV_4_8, 42 6, UNIPHIER_PIN_DRV_1BIT,
45 6, UNIPHIER_PIN_PULL_DOWN), 43 6, UNIPHIER_PIN_PULL_DOWN),
46 UNIPHIER_PINCTRL_PIN(7, "ASEL", UNIPHIER_PIN_IECTRL_NONE, 44 UNIPHIER_PINCTRL_PIN(7, "ASEL", UNIPHIER_PIN_IECTRL_NONE,
47 7, UNIPHIER_PIN_DRV_4_8, 45 7, UNIPHIER_PIN_DRV_1BIT,
48 7, UNIPHIER_PIN_PULL_DOWN), 46 7, UNIPHIER_PIN_PULL_DOWN),
49 UNIPHIER_PINCTRL_PIN(8, "ARCRESET", UNIPHIER_PIN_IECTRL_NONE, 47 UNIPHIER_PINCTRL_PIN(8, "ARCRESET", UNIPHIER_PIN_IECTRL_NONE,
50 8, UNIPHIER_PIN_DRV_4_8, 48 8, UNIPHIER_PIN_DRV_1BIT,
51 8, UNIPHIER_PIN_PULL_DOWN), 49 8, UNIPHIER_PIN_PULL_DOWN),
52 UNIPHIER_PINCTRL_PIN(9, "ARCUNLOCK", UNIPHIER_PIN_IECTRL_NONE, 50 UNIPHIER_PINCTRL_PIN(9, "ARCUNLOCK", UNIPHIER_PIN_IECTRL_NONE,
53 9, UNIPHIER_PIN_DRV_4_8, 51 9, UNIPHIER_PIN_DRV_1BIT,
54 9, UNIPHIER_PIN_PULL_DOWN), 52 9, UNIPHIER_PIN_PULL_DOWN),
55 UNIPHIER_PINCTRL_PIN(10, "XSRST", UNIPHIER_PIN_IECTRL_NONE, 53 UNIPHIER_PINCTRL_PIN(10, "XSRST", UNIPHIER_PIN_IECTRL_NONE,
56 10, UNIPHIER_PIN_DRV_4_8, 54 10, UNIPHIER_PIN_DRV_1BIT,
57 10, UNIPHIER_PIN_PULL_DOWN), 55 10, UNIPHIER_PIN_PULL_DOWN),
58 UNIPHIER_PINCTRL_PIN(11, "XNMIRQ", UNIPHIER_PIN_IECTRL_NONE, 56 UNIPHIER_PINCTRL_PIN(11, "XNMIRQ", UNIPHIER_PIN_IECTRL_NONE,
59 11, UNIPHIER_PIN_DRV_4_8, 57 11, UNIPHIER_PIN_DRV_1BIT,
60 11, UNIPHIER_PIN_PULL_UP), 58 11, UNIPHIER_PIN_PULL_UP),
61 UNIPHIER_PINCTRL_PIN(12, "XSCIRQ", UNIPHIER_PIN_IECTRL_NONE, 59 UNIPHIER_PINCTRL_PIN(12, "XSCIRQ", UNIPHIER_PIN_IECTRL_NONE,
62 12, UNIPHIER_PIN_DRV_4_8, 60 12, UNIPHIER_PIN_DRV_1BIT,
63 12, UNIPHIER_PIN_PULL_UP), 61 12, UNIPHIER_PIN_PULL_UP),
64 UNIPHIER_PINCTRL_PIN(13, "EXTRG", UNIPHIER_PIN_IECTRL_NONE, 62 UNIPHIER_PINCTRL_PIN(13, "EXTRG", UNIPHIER_PIN_IECTRL_NONE,
65 13, UNIPHIER_PIN_DRV_4_8, 63 13, UNIPHIER_PIN_DRV_1BIT,
66 13, UNIPHIER_PIN_PULL_DOWN), 64 13, UNIPHIER_PIN_PULL_DOWN),
67 UNIPHIER_PINCTRL_PIN(14, "TRCCLK", UNIPHIER_PIN_IECTRL_NONE, 65 UNIPHIER_PINCTRL_PIN(14, "TRCCLK", UNIPHIER_PIN_IECTRL_NONE,
68 14, UNIPHIER_PIN_DRV_4_8, 66 14, UNIPHIER_PIN_DRV_1BIT,
69 14, UNIPHIER_PIN_PULL_DOWN), 67 14, UNIPHIER_PIN_PULL_DOWN),
70 UNIPHIER_PINCTRL_PIN(15, "TRCCTL", UNIPHIER_PIN_IECTRL_NONE, 68 UNIPHIER_PINCTRL_PIN(15, "TRCCTL", UNIPHIER_PIN_IECTRL_NONE,
71 15, UNIPHIER_PIN_DRV_4_8, 69 15, UNIPHIER_PIN_DRV_1BIT,
72 15, UNIPHIER_PIN_PULL_DOWN), 70 15, UNIPHIER_PIN_PULL_DOWN),
73 UNIPHIER_PINCTRL_PIN(16, "TRCD0", UNIPHIER_PIN_IECTRL_NONE, 71 UNIPHIER_PINCTRL_PIN(16, "TRCD0", UNIPHIER_PIN_IECTRL_NONE,
74 16, UNIPHIER_PIN_DRV_4_8, 72 16, UNIPHIER_PIN_DRV_1BIT,
75 16, UNIPHIER_PIN_PULL_DOWN), 73 16, UNIPHIER_PIN_PULL_DOWN),
76 UNIPHIER_PINCTRL_PIN(17, "TRCD1", UNIPHIER_PIN_IECTRL_NONE, 74 UNIPHIER_PINCTRL_PIN(17, "TRCD1", UNIPHIER_PIN_IECTRL_NONE,
77 17, UNIPHIER_PIN_DRV_4_8, 75 17, UNIPHIER_PIN_DRV_1BIT,
78 17, UNIPHIER_PIN_PULL_DOWN), 76 17, UNIPHIER_PIN_PULL_DOWN),
79 UNIPHIER_PINCTRL_PIN(18, "TRCD2", UNIPHIER_PIN_IECTRL_NONE, 77 UNIPHIER_PINCTRL_PIN(18, "TRCD2", UNIPHIER_PIN_IECTRL_NONE,
80 18, UNIPHIER_PIN_DRV_4_8, 78 18, UNIPHIER_PIN_DRV_1BIT,
81 18, UNIPHIER_PIN_PULL_DOWN), 79 18, UNIPHIER_PIN_PULL_DOWN),
82 UNIPHIER_PINCTRL_PIN(19, "TRCD3", UNIPHIER_PIN_IECTRL_NONE, 80 UNIPHIER_PINCTRL_PIN(19, "TRCD3", UNIPHIER_PIN_IECTRL_NONE,
83 19, UNIPHIER_PIN_DRV_4_8, 81 19, UNIPHIER_PIN_DRV_1BIT,
84 19, UNIPHIER_PIN_PULL_DOWN), 82 19, UNIPHIER_PIN_PULL_DOWN),
85 UNIPHIER_PINCTRL_PIN(20, "TRCD4", UNIPHIER_PIN_IECTRL_NONE, 83 UNIPHIER_PINCTRL_PIN(20, "TRCD4", UNIPHIER_PIN_IECTRL_NONE,
86 20, UNIPHIER_PIN_DRV_4_8, 84 20, UNIPHIER_PIN_DRV_1BIT,
87 20, UNIPHIER_PIN_PULL_DOWN), 85 20, UNIPHIER_PIN_PULL_DOWN),
88 UNIPHIER_PINCTRL_PIN(21, "TRCD5", UNIPHIER_PIN_IECTRL_NONE, 86 UNIPHIER_PINCTRL_PIN(21, "TRCD5", UNIPHIER_PIN_IECTRL_NONE,
89 21, UNIPHIER_PIN_DRV_4_8, 87 21, UNIPHIER_PIN_DRV_1BIT,
90 21, UNIPHIER_PIN_PULL_DOWN), 88 21, UNIPHIER_PIN_PULL_DOWN),
91 UNIPHIER_PINCTRL_PIN(22, "TRCD6", UNIPHIER_PIN_IECTRL_NONE, 89 UNIPHIER_PINCTRL_PIN(22, "TRCD6", UNIPHIER_PIN_IECTRL_NONE,
92 22, UNIPHIER_PIN_DRV_4_8, 90 22, UNIPHIER_PIN_DRV_1BIT,
93 22, UNIPHIER_PIN_PULL_DOWN), 91 22, UNIPHIER_PIN_PULL_DOWN),
94 UNIPHIER_PINCTRL_PIN(23, "TRCD7", UNIPHIER_PIN_IECTRL_NONE, 92 UNIPHIER_PINCTRL_PIN(23, "TRCD7", UNIPHIER_PIN_IECTRL_NONE,
95 23, UNIPHIER_PIN_DRV_4_8, 93 23, UNIPHIER_PIN_DRV_1BIT,
96 23, UNIPHIER_PIN_PULL_DOWN), 94 23, UNIPHIER_PIN_PULL_DOWN),
97 UNIPHIER_PINCTRL_PIN(24, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 95 UNIPHIER_PINCTRL_PIN(24, "XECS1", UNIPHIER_PIN_IECTRL_NONE,
98 24, UNIPHIER_PIN_DRV_4_8, 96 24, UNIPHIER_PIN_DRV_1BIT,
99 24, UNIPHIER_PIN_PULL_UP), 97 24, UNIPHIER_PIN_PULL_UP),
100 UNIPHIER_PINCTRL_PIN(25, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 98 UNIPHIER_PINCTRL_PIN(25, "ERXW", UNIPHIER_PIN_IECTRL_NONE,
101 25, UNIPHIER_PIN_DRV_4_8, 99 25, UNIPHIER_PIN_DRV_1BIT,
102 25, UNIPHIER_PIN_PULL_UP), 100 25, UNIPHIER_PIN_PULL_UP),
103 UNIPHIER_PINCTRL_PIN(26, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 101 UNIPHIER_PINCTRL_PIN(26, "XERWE0", UNIPHIER_PIN_IECTRL_NONE,
104 26, UNIPHIER_PIN_DRV_4_8, 102 26, UNIPHIER_PIN_DRV_1BIT,
105 26, UNIPHIER_PIN_PULL_UP), 103 26, UNIPHIER_PIN_PULL_UP),
106 UNIPHIER_PINCTRL_PIN(27, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 104 UNIPHIER_PINCTRL_PIN(27, "XERWE1", UNIPHIER_PIN_IECTRL_NONE,
107 27, UNIPHIER_PIN_DRV_4_8, 105 27, UNIPHIER_PIN_DRV_1BIT,
108 27, UNIPHIER_PIN_PULL_UP), 106 27, UNIPHIER_PIN_PULL_UP),
109 UNIPHIER_PINCTRL_PIN(28, "ES0", UNIPHIER_PIN_IECTRL_NONE, 107 UNIPHIER_PINCTRL_PIN(28, "ES0", UNIPHIER_PIN_IECTRL_NONE,
110 28, UNIPHIER_PIN_DRV_4_8, 108 28, UNIPHIER_PIN_DRV_1BIT,
111 28, UNIPHIER_PIN_PULL_DOWN), 109 28, UNIPHIER_PIN_PULL_DOWN),
112 UNIPHIER_PINCTRL_PIN(29, "ES1", UNIPHIER_PIN_IECTRL_NONE, 110 UNIPHIER_PINCTRL_PIN(29, "ES1", UNIPHIER_PIN_IECTRL_NONE,
113 29, UNIPHIER_PIN_DRV_4_8, 111 29, UNIPHIER_PIN_DRV_1BIT,
114 29, UNIPHIER_PIN_PULL_DOWN), 112 29, UNIPHIER_PIN_PULL_DOWN),
115 UNIPHIER_PINCTRL_PIN(30, "ES2", UNIPHIER_PIN_IECTRL_NONE, 113 UNIPHIER_PINCTRL_PIN(30, "ES2", UNIPHIER_PIN_IECTRL_NONE,
116 30, UNIPHIER_PIN_DRV_4_8, 114 30, UNIPHIER_PIN_DRV_1BIT,
117 30, UNIPHIER_PIN_PULL_DOWN), 115 30, UNIPHIER_PIN_PULL_DOWN),
118 UNIPHIER_PINCTRL_PIN(31, "ED0", UNIPHIER_PIN_IECTRL_NONE, 116 UNIPHIER_PINCTRL_PIN(31, "ED0", UNIPHIER_PIN_IECTRL_NONE,
119 31, UNIPHIER_PIN_DRV_4_8, 117 31, UNIPHIER_PIN_DRV_1BIT,
120 31, UNIPHIER_PIN_PULL_DOWN), 118 31, UNIPHIER_PIN_PULL_DOWN),
121 UNIPHIER_PINCTRL_PIN(32, "ED1", UNIPHIER_PIN_IECTRL_NONE, 119 UNIPHIER_PINCTRL_PIN(32, "ED1", UNIPHIER_PIN_IECTRL_NONE,
122 32, UNIPHIER_PIN_DRV_4_8, 120 32, UNIPHIER_PIN_DRV_1BIT,
123 32, UNIPHIER_PIN_PULL_DOWN), 121 32, UNIPHIER_PIN_PULL_DOWN),
124 UNIPHIER_PINCTRL_PIN(33, "ED2", UNIPHIER_PIN_IECTRL_NONE, 122 UNIPHIER_PINCTRL_PIN(33, "ED2", UNIPHIER_PIN_IECTRL_NONE,
125 33, UNIPHIER_PIN_DRV_4_8, 123 33, UNIPHIER_PIN_DRV_1BIT,
126 33, UNIPHIER_PIN_PULL_DOWN), 124 33, UNIPHIER_PIN_PULL_DOWN),
127 UNIPHIER_PINCTRL_PIN(34, "ED3", UNIPHIER_PIN_IECTRL_NONE, 125 UNIPHIER_PINCTRL_PIN(34, "ED3", UNIPHIER_PIN_IECTRL_NONE,
128 34, UNIPHIER_PIN_DRV_4_8, 126 34, UNIPHIER_PIN_DRV_1BIT,
129 34, UNIPHIER_PIN_PULL_DOWN), 127 34, UNIPHIER_PIN_PULL_DOWN),
130 UNIPHIER_PINCTRL_PIN(35, "ED4", UNIPHIER_PIN_IECTRL_NONE, 128 UNIPHIER_PINCTRL_PIN(35, "ED4", UNIPHIER_PIN_IECTRL_NONE,
131 35, UNIPHIER_PIN_DRV_4_8, 129 35, UNIPHIER_PIN_DRV_1BIT,
132 35, UNIPHIER_PIN_PULL_DOWN), 130 35, UNIPHIER_PIN_PULL_DOWN),
133 UNIPHIER_PINCTRL_PIN(36, "ED5", UNIPHIER_PIN_IECTRL_NONE, 131 UNIPHIER_PINCTRL_PIN(36, "ED5", UNIPHIER_PIN_IECTRL_NONE,
134 36, UNIPHIER_PIN_DRV_4_8, 132 36, UNIPHIER_PIN_DRV_1BIT,
135 36, UNIPHIER_PIN_PULL_DOWN), 133 36, UNIPHIER_PIN_PULL_DOWN),
136 UNIPHIER_PINCTRL_PIN(37, "ED6", UNIPHIER_PIN_IECTRL_NONE, 134 UNIPHIER_PINCTRL_PIN(37, "ED6", UNIPHIER_PIN_IECTRL_NONE,
137 37, UNIPHIER_PIN_DRV_4_8, 135 37, UNIPHIER_PIN_DRV_1BIT,
138 37, UNIPHIER_PIN_PULL_DOWN), 136 37, UNIPHIER_PIN_PULL_DOWN),
139 UNIPHIER_PINCTRL_PIN(38, "ED7", UNIPHIER_PIN_IECTRL_NONE, 137 UNIPHIER_PINCTRL_PIN(38, "ED7", UNIPHIER_PIN_IECTRL_NONE,
140 38, UNIPHIER_PIN_DRV_4_8, 138 38, UNIPHIER_PIN_DRV_1BIT,
141 38, UNIPHIER_PIN_PULL_DOWN), 139 38, UNIPHIER_PIN_PULL_DOWN),
142 UNIPHIER_PINCTRL_PIN(39, "BOOTSWAP", UNIPHIER_PIN_IECTRL_NONE, 140 UNIPHIER_PINCTRL_PIN(39, "BOOTSWAP", UNIPHIER_PIN_IECTRL_NONE,
143 39, UNIPHIER_PIN_DRV_NONE, 141 -1, UNIPHIER_PIN_DRV_NONE,
144 39, UNIPHIER_PIN_PULL_UP), 142 39, UNIPHIER_PIN_PULL_UP),
145 UNIPHIER_PINCTRL_PIN(40, "NFD0", UNIPHIER_PIN_IECTRL_NONE, 143 UNIPHIER_PINCTRL_PIN(40, "NFD0", UNIPHIER_PIN_IECTRL_NONE,
146 2, UNIPHIER_PIN_DRV_8_12_16_20, 144 2, UNIPHIER_PIN_DRV_2BIT,
147 40, UNIPHIER_PIN_PULL_UP), 145 40, UNIPHIER_PIN_PULL_UP),
148 UNIPHIER_PINCTRL_PIN(41, "NFD1", UNIPHIER_PIN_IECTRL_NONE, 146 UNIPHIER_PINCTRL_PIN(41, "NFD1", UNIPHIER_PIN_IECTRL_NONE,
149 3, UNIPHIER_PIN_DRV_8_12_16_20, 147 3, UNIPHIER_PIN_DRV_2BIT,
150 41, UNIPHIER_PIN_PULL_UP), 148 41, UNIPHIER_PIN_PULL_UP),
151 UNIPHIER_PINCTRL_PIN(42, "NFD2", UNIPHIER_PIN_IECTRL_NONE, 149 UNIPHIER_PINCTRL_PIN(42, "NFD2", UNIPHIER_PIN_IECTRL_NONE,
152 4, UNIPHIER_PIN_DRV_8_12_16_20, 150 4, UNIPHIER_PIN_DRV_2BIT,
153 42, UNIPHIER_PIN_PULL_UP), 151 42, UNIPHIER_PIN_PULL_UP),
154 UNIPHIER_PINCTRL_PIN(43, "NFD3", UNIPHIER_PIN_IECTRL_NONE, 152 UNIPHIER_PINCTRL_PIN(43, "NFD3", UNIPHIER_PIN_IECTRL_NONE,
155 5, UNIPHIER_PIN_DRV_8_12_16_20, 153 5, UNIPHIER_PIN_DRV_2BIT,
156 43, UNIPHIER_PIN_PULL_UP), 154 43, UNIPHIER_PIN_PULL_UP),
157 UNIPHIER_PINCTRL_PIN(44, "NFD4", UNIPHIER_PIN_IECTRL_NONE, 155 UNIPHIER_PINCTRL_PIN(44, "NFD4", UNIPHIER_PIN_IECTRL_NONE,
158 6, UNIPHIER_PIN_DRV_8_12_16_20, 156 6, UNIPHIER_PIN_DRV_2BIT,
159 44, UNIPHIER_PIN_PULL_UP), 157 44, UNIPHIER_PIN_PULL_UP),
160 UNIPHIER_PINCTRL_PIN(45, "NFD5", UNIPHIER_PIN_IECTRL_NONE, 158 UNIPHIER_PINCTRL_PIN(45, "NFD5", UNIPHIER_PIN_IECTRL_NONE,
161 7, UNIPHIER_PIN_DRV_8_12_16_20, 159 7, UNIPHIER_PIN_DRV_2BIT,
162 45, UNIPHIER_PIN_PULL_UP), 160 45, UNIPHIER_PIN_PULL_UP),
163 UNIPHIER_PINCTRL_PIN(46, "NFD6", UNIPHIER_PIN_IECTRL_NONE, 161 UNIPHIER_PINCTRL_PIN(46, "NFD6", UNIPHIER_PIN_IECTRL_NONE,
164 8, UNIPHIER_PIN_DRV_8_12_16_20, 162 8, UNIPHIER_PIN_DRV_2BIT,
165 46, UNIPHIER_PIN_PULL_UP), 163 46, UNIPHIER_PIN_PULL_UP),
166 UNIPHIER_PINCTRL_PIN(47, "NFD7", UNIPHIER_PIN_IECTRL_NONE, 164 UNIPHIER_PINCTRL_PIN(47, "NFD7", UNIPHIER_PIN_IECTRL_NONE,
167 9, UNIPHIER_PIN_DRV_8_12_16_20, 165 9, UNIPHIER_PIN_DRV_2BIT,
168 47, UNIPHIER_PIN_PULL_UP), 166 47, UNIPHIER_PIN_PULL_UP),
169 UNIPHIER_PINCTRL_PIN(48, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 167 UNIPHIER_PINCTRL_PIN(48, "NFALE", UNIPHIER_PIN_IECTRL_NONE,
170 48, UNIPHIER_PIN_DRV_4_8, 168 48, UNIPHIER_PIN_DRV_1BIT,
171 48, UNIPHIER_PIN_PULL_DOWN), 169 48, UNIPHIER_PIN_PULL_DOWN),
172 UNIPHIER_PINCTRL_PIN(49, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 170 UNIPHIER_PINCTRL_PIN(49, "NFCLE", UNIPHIER_PIN_IECTRL_NONE,
173 49, UNIPHIER_PIN_DRV_4_8, 171 49, UNIPHIER_PIN_DRV_1BIT,
174 49, UNIPHIER_PIN_PULL_DOWN), 172 49, UNIPHIER_PIN_PULL_DOWN),
175 UNIPHIER_PINCTRL_PIN(50, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 173 UNIPHIER_PINCTRL_PIN(50, "XNFRE", UNIPHIER_PIN_IECTRL_NONE,
176 50, UNIPHIER_PIN_DRV_4_8, 174 50, UNIPHIER_PIN_DRV_1BIT,
177 50, UNIPHIER_PIN_PULL_UP), 175 50, UNIPHIER_PIN_PULL_UP),
178 UNIPHIER_PINCTRL_PIN(51, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 176 UNIPHIER_PINCTRL_PIN(51, "XNFWE", UNIPHIER_PIN_IECTRL_NONE,
179 0, UNIPHIER_PIN_DRV_8_12_16_20, 177 0, UNIPHIER_PIN_DRV_2BIT,
180 51, UNIPHIER_PIN_PULL_UP), 178 51, UNIPHIER_PIN_PULL_UP),
181 UNIPHIER_PINCTRL_PIN(52, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 179 UNIPHIER_PINCTRL_PIN(52, "XNFWP", UNIPHIER_PIN_IECTRL_NONE,
182 52, UNIPHIER_PIN_DRV_4_8, 180 52, UNIPHIER_PIN_DRV_1BIT,
183 52, UNIPHIER_PIN_PULL_DOWN), 181 52, UNIPHIER_PIN_PULL_DOWN),
184 UNIPHIER_PINCTRL_PIN(53, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 182 UNIPHIER_PINCTRL_PIN(53, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE,
185 1, UNIPHIER_PIN_DRV_8_12_16_20, 183 1, UNIPHIER_PIN_DRV_2BIT,
186 53, UNIPHIER_PIN_PULL_UP), 184 53, UNIPHIER_PIN_PULL_UP),
187 UNIPHIER_PINCTRL_PIN(54, "NRYBY0", UNIPHIER_PIN_IECTRL_NONE, 185 UNIPHIER_PINCTRL_PIN(54, "NRYBY0", UNIPHIER_PIN_IECTRL_NONE,
188 54, UNIPHIER_PIN_DRV_4_8, 186 54, UNIPHIER_PIN_DRV_1BIT,
189 54, UNIPHIER_PIN_PULL_UP), 187 54, UNIPHIER_PIN_PULL_UP),
190 UNIPHIER_PINCTRL_PIN(55, "DMDSCLTST", UNIPHIER_PIN_IECTRL_NONE, 188 UNIPHIER_PINCTRL_PIN(55, "DMDSCLTST", UNIPHIER_PIN_IECTRL_NONE,
191 -1, UNIPHIER_PIN_DRV_NONE, 189 -1, UNIPHIER_PIN_DRV_NONE,
192 -1, UNIPHIER_PIN_PULL_NONE), 190 -1, UNIPHIER_PIN_PULL_NONE),
193 UNIPHIER_PINCTRL_PIN(56, "DMDSDATST", UNIPHIER_PIN_IECTRL_NONE, 191 UNIPHIER_PINCTRL_PIN(56, "DMDSDATST", UNIPHIER_PIN_IECTRL_NONE,
194 -1, UNIPHIER_PIN_DRV_FIXED_4, 192 -1, UNIPHIER_PIN_DRV_FIXED4,
195 -1, UNIPHIER_PIN_PULL_NONE), 193 -1, UNIPHIER_PIN_PULL_NONE),
196 UNIPHIER_PINCTRL_PIN(57, "AGCI0", 3, 194 UNIPHIER_PINCTRL_PIN(57, "AGCI0", 3,
197 -1, UNIPHIER_PIN_DRV_FIXED_4, 195 -1, UNIPHIER_PIN_DRV_FIXED4,
198 55, UNIPHIER_PIN_PULL_DOWN), 196 55, UNIPHIER_PIN_PULL_DOWN),
199 UNIPHIER_PINCTRL_PIN(58, "DMDSCL0", UNIPHIER_PIN_IECTRL_NONE, 197 UNIPHIER_PINCTRL_PIN(58, "DMDSCL0", UNIPHIER_PIN_IECTRL_NONE,
200 -1, UNIPHIER_PIN_DRV_FIXED_4, 198 -1, UNIPHIER_PIN_DRV_FIXED4,
201 -1, UNIPHIER_PIN_PULL_NONE), 199 -1, UNIPHIER_PIN_PULL_NONE),
202 UNIPHIER_PINCTRL_PIN(59, "DMDSDA0", UNIPHIER_PIN_IECTRL_NONE, 200 UNIPHIER_PINCTRL_PIN(59, "DMDSDA0", UNIPHIER_PIN_IECTRL_NONE,
203 -1, UNIPHIER_PIN_DRV_FIXED_4, 201 -1, UNIPHIER_PIN_DRV_FIXED4,
204 -1, UNIPHIER_PIN_PULL_NONE), 202 -1, UNIPHIER_PIN_PULL_NONE),
205 UNIPHIER_PINCTRL_PIN(60, "AGCBS0", 5, 203 UNIPHIER_PINCTRL_PIN(60, "AGCBS0", 5,
206 -1, UNIPHIER_PIN_DRV_FIXED_4, 204 -1, UNIPHIER_PIN_DRV_FIXED4,
207 56, UNIPHIER_PIN_PULL_DOWN), 205 56, UNIPHIER_PIN_PULL_DOWN),
208 UNIPHIER_PINCTRL_PIN(61, "DMDSCL1", UNIPHIER_PIN_IECTRL_NONE, 206 UNIPHIER_PINCTRL_PIN(61, "DMDSCL1", UNIPHIER_PIN_IECTRL_NONE,
209 -1, UNIPHIER_PIN_DRV_FIXED_4, 207 -1, UNIPHIER_PIN_DRV_FIXED4,
210 -1, UNIPHIER_PIN_PULL_NONE), 208 -1, UNIPHIER_PIN_PULL_NONE),
211 UNIPHIER_PINCTRL_PIN(62, "DMDSDA1", UNIPHIER_PIN_IECTRL_NONE, 209 UNIPHIER_PINCTRL_PIN(62, "DMDSDA1", UNIPHIER_PIN_IECTRL_NONE,
212 -1, UNIPHIER_PIN_DRV_FIXED_4, 210 -1, UNIPHIER_PIN_DRV_FIXED4,
213 -1, UNIPHIER_PIN_PULL_NONE), 211 -1, UNIPHIER_PIN_PULL_NONE),
214 UNIPHIER_PINCTRL_PIN(63, "ANTSHORT", UNIPHIER_PIN_IECTRL_NONE, 212 UNIPHIER_PINCTRL_PIN(63, "ANTSHORT", UNIPHIER_PIN_IECTRL_NONE,
215 57, UNIPHIER_PIN_DRV_4_8, 213 57, UNIPHIER_PIN_DRV_1BIT,
216 57, UNIPHIER_PIN_PULL_UP), 214 57, UNIPHIER_PIN_PULL_UP),
217 UNIPHIER_PINCTRL_PIN(64, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE, 215 UNIPHIER_PINCTRL_PIN(64, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE,
218 58, UNIPHIER_PIN_DRV_4_8, 216 58, UNIPHIER_PIN_DRV_1BIT,
219 58, UNIPHIER_PIN_PULL_DOWN), 217 58, UNIPHIER_PIN_PULL_DOWN),
220 UNIPHIER_PINCTRL_PIN(65, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE, 218 UNIPHIER_PINCTRL_PIN(65, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE,
221 59, UNIPHIER_PIN_DRV_4_8, 219 59, UNIPHIER_PIN_DRV_1BIT,
222 59, UNIPHIER_PIN_PULL_DOWN), 220 59, UNIPHIER_PIN_PULL_DOWN),
223 UNIPHIER_PINCTRL_PIN(66, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE, 221 UNIPHIER_PINCTRL_PIN(66, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE,
224 60, UNIPHIER_PIN_DRV_4_8, 222 60, UNIPHIER_PIN_DRV_1BIT,
225 60, UNIPHIER_PIN_PULL_DOWN), 223 60, UNIPHIER_PIN_PULL_DOWN),
226 UNIPHIER_PINCTRL_PIN(67, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE, 224 UNIPHIER_PINCTRL_PIN(67, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE,
227 61, UNIPHIER_PIN_DRV_4_8, 225 61, UNIPHIER_PIN_DRV_1BIT,
228 61, UNIPHIER_PIN_PULL_DOWN), 226 61, UNIPHIER_PIN_PULL_DOWN),
229 UNIPHIER_PINCTRL_PIN(68, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE, 227 UNIPHIER_PINCTRL_PIN(68, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE,
230 62, UNIPHIER_PIN_DRV_4_8, 228 62, UNIPHIER_PIN_DRV_1BIT,
231 62, UNIPHIER_PIN_PULL_DOWN), 229 62, UNIPHIER_PIN_PULL_DOWN),
232 UNIPHIER_PINCTRL_PIN(69, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE, 230 UNIPHIER_PINCTRL_PIN(69, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE,
233 63, UNIPHIER_PIN_DRV_4_8, 231 63, UNIPHIER_PIN_DRV_1BIT,
234 63, UNIPHIER_PIN_PULL_DOWN), 232 63, UNIPHIER_PIN_PULL_DOWN),
235 UNIPHIER_PINCTRL_PIN(70, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE, 233 UNIPHIER_PINCTRL_PIN(70, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE,
236 64, UNIPHIER_PIN_DRV_4_8, 234 64, UNIPHIER_PIN_DRV_1BIT,
237 64, UNIPHIER_PIN_PULL_DOWN), 235 64, UNIPHIER_PIN_PULL_DOWN),
238 UNIPHIER_PINCTRL_PIN(71, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE, 236 UNIPHIER_PINCTRL_PIN(71, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE,
239 65, UNIPHIER_PIN_DRV_4_8, 237 65, UNIPHIER_PIN_DRV_1BIT,
240 65, UNIPHIER_PIN_PULL_DOWN), 238 65, UNIPHIER_PIN_PULL_DOWN),
241 UNIPHIER_PINCTRL_PIN(72, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE, 239 UNIPHIER_PINCTRL_PIN(72, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE,
242 66, UNIPHIER_PIN_DRV_4_8, 240 66, UNIPHIER_PIN_DRV_1BIT,
243 66, UNIPHIER_PIN_PULL_DOWN), 241 66, UNIPHIER_PIN_PULL_DOWN),
244 UNIPHIER_PINCTRL_PIN(73, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE, 242 UNIPHIER_PINCTRL_PIN(73, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE,
245 67, UNIPHIER_PIN_DRV_4_8, 243 67, UNIPHIER_PIN_DRV_1BIT,
246 67, UNIPHIER_PIN_PULL_DOWN), 244 67, UNIPHIER_PIN_PULL_DOWN),
247 UNIPHIER_PINCTRL_PIN(74, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE, 245 UNIPHIER_PINCTRL_PIN(74, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE,
248 68, UNIPHIER_PIN_DRV_4_8, 246 68, UNIPHIER_PIN_DRV_1BIT,
249 68, UNIPHIER_PIN_PULL_DOWN), 247 68, UNIPHIER_PIN_PULL_DOWN),
250 UNIPHIER_PINCTRL_PIN(75, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE, 248 UNIPHIER_PINCTRL_PIN(75, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE,
251 69, UNIPHIER_PIN_DRV_4_8, 249 69, UNIPHIER_PIN_DRV_1BIT,
252 69, UNIPHIER_PIN_PULL_DOWN), 250 69, UNIPHIER_PIN_PULL_DOWN),
253 UNIPHIER_PINCTRL_PIN(76, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE, 251 UNIPHIER_PINCTRL_PIN(76, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE,
254 70, UNIPHIER_PIN_DRV_4_8, 252 70, UNIPHIER_PIN_DRV_1BIT,
255 70, UNIPHIER_PIN_PULL_DOWN), 253 70, UNIPHIER_PIN_PULL_DOWN),
256 UNIPHIER_PINCTRL_PIN(77, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE, 254 UNIPHIER_PINCTRL_PIN(77, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE,
257 71, UNIPHIER_PIN_DRV_4_8, 255 71, UNIPHIER_PIN_DRV_1BIT,
258 71, UNIPHIER_PIN_PULL_DOWN), 256 71, UNIPHIER_PIN_PULL_DOWN),
259 UNIPHIER_PINCTRL_PIN(78, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE, 257 UNIPHIER_PINCTRL_PIN(78, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE,
260 72, UNIPHIER_PIN_DRV_4_8, 258 72, UNIPHIER_PIN_DRV_1BIT,
261 72, UNIPHIER_PIN_PULL_DOWN), 259 72, UNIPHIER_PIN_PULL_DOWN),
262 UNIPHIER_PINCTRL_PIN(79, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE, 260 UNIPHIER_PINCTRL_PIN(79, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE,
263 73, UNIPHIER_PIN_DRV_4_8, 261 73, UNIPHIER_PIN_DRV_1BIT,
264 73, UNIPHIER_PIN_PULL_DOWN), 262 73, UNIPHIER_PIN_PULL_DOWN),
265 UNIPHIER_PINCTRL_PIN(80, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE, 263 UNIPHIER_PINCTRL_PIN(80, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE,
266 74, UNIPHIER_PIN_DRV_4_8, 264 74, UNIPHIER_PIN_DRV_1BIT,
267 74, UNIPHIER_PIN_PULL_DOWN), 265 74, UNIPHIER_PIN_PULL_DOWN),
268 UNIPHIER_PINCTRL_PIN(81, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE, 266 UNIPHIER_PINCTRL_PIN(81, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE,
269 75, UNIPHIER_PIN_DRV_4_8, 267 75, UNIPHIER_PIN_DRV_1BIT,
270 75, UNIPHIER_PIN_PULL_DOWN), 268 75, UNIPHIER_PIN_PULL_DOWN),
271 UNIPHIER_PINCTRL_PIN(82, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE, 269 UNIPHIER_PINCTRL_PIN(82, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE,
272 76, UNIPHIER_PIN_DRV_4_8, 270 76, UNIPHIER_PIN_DRV_1BIT,
273 76, UNIPHIER_PIN_PULL_DOWN), 271 76, UNIPHIER_PIN_PULL_DOWN),
274 UNIPHIER_PINCTRL_PIN(83, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE, 272 UNIPHIER_PINCTRL_PIN(83, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE,
275 77, UNIPHIER_PIN_DRV_4_8, 273 77, UNIPHIER_PIN_DRV_1BIT,
276 77, UNIPHIER_PIN_PULL_DOWN), 274 77, UNIPHIER_PIN_PULL_DOWN),
277 UNIPHIER_PINCTRL_PIN(84, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE, 275 UNIPHIER_PINCTRL_PIN(84, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE,
278 78, UNIPHIER_PIN_DRV_4_8, 276 78, UNIPHIER_PIN_DRV_1BIT,
279 78, UNIPHIER_PIN_PULL_DOWN), 277 78, UNIPHIER_PIN_PULL_DOWN),
280 UNIPHIER_PINCTRL_PIN(85, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE, 278 UNIPHIER_PINCTRL_PIN(85, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE,
281 79, UNIPHIER_PIN_DRV_4_8, 279 79, UNIPHIER_PIN_DRV_1BIT,
282 79, UNIPHIER_PIN_PULL_DOWN), 280 79, UNIPHIER_PIN_PULL_DOWN),
283 UNIPHIER_PINCTRL_PIN(86, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE, 281 UNIPHIER_PINCTRL_PIN(86, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE,
284 80, UNIPHIER_PIN_DRV_4_8, 282 80, UNIPHIER_PIN_DRV_1BIT,
285 80, UNIPHIER_PIN_PULL_DOWN), 283 80, UNIPHIER_PIN_PULL_DOWN),
286 UNIPHIER_PINCTRL_PIN(87, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE, 284 UNIPHIER_PINCTRL_PIN(87, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE,
287 81, UNIPHIER_PIN_DRV_4_8, 285 81, UNIPHIER_PIN_DRV_1BIT,
288 81, UNIPHIER_PIN_PULL_DOWN), 286 81, UNIPHIER_PIN_PULL_DOWN),
289 UNIPHIER_PINCTRL_PIN(88, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE, 287 UNIPHIER_PINCTRL_PIN(88, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE,
290 82, UNIPHIER_PIN_DRV_4_8, 288 82, UNIPHIER_PIN_DRV_1BIT,
291 82, UNIPHIER_PIN_PULL_DOWN), 289 82, UNIPHIER_PIN_PULL_DOWN),
292 UNIPHIER_PINCTRL_PIN(89, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE, 290 UNIPHIER_PINCTRL_PIN(89, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE,
293 83, UNIPHIER_PIN_DRV_4_8, 291 83, UNIPHIER_PIN_DRV_1BIT,
294 83, UNIPHIER_PIN_PULL_DOWN), 292 83, UNIPHIER_PIN_PULL_DOWN),
295 UNIPHIER_PINCTRL_PIN(90, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE, 293 UNIPHIER_PINCTRL_PIN(90, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE,
296 84, UNIPHIER_PIN_DRV_4_8, 294 84, UNIPHIER_PIN_DRV_1BIT,
297 84, UNIPHIER_PIN_PULL_DOWN), 295 84, UNIPHIER_PIN_PULL_DOWN),
298 UNIPHIER_PINCTRL_PIN(91, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE, 296 UNIPHIER_PINCTRL_PIN(91, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE,
299 85, UNIPHIER_PIN_DRV_4_8, 297 85, UNIPHIER_PIN_DRV_1BIT,
300 85, UNIPHIER_PIN_PULL_DOWN), 298 85, UNIPHIER_PIN_PULL_DOWN),
301 UNIPHIER_PINCTRL_PIN(92, "CKFEO", UNIPHIER_PIN_IECTRL_NONE, 299 UNIPHIER_PINCTRL_PIN(92, "CKFEO", UNIPHIER_PIN_IECTRL_NONE,
302 86, UNIPHIER_PIN_DRV_4_8, 300 86, UNIPHIER_PIN_DRV_1BIT,
303 86, UNIPHIER_PIN_PULL_DOWN), 301 86, UNIPHIER_PIN_PULL_DOWN),
304 UNIPHIER_PINCTRL_PIN(93, "XFERST", UNIPHIER_PIN_IECTRL_NONE, 302 UNIPHIER_PINCTRL_PIN(93, "XFERST", UNIPHIER_PIN_IECTRL_NONE,
305 87, UNIPHIER_PIN_DRV_4_8, 303 87, UNIPHIER_PIN_DRV_1BIT,
306 87, UNIPHIER_PIN_PULL_DOWN), 304 87, UNIPHIER_PIN_PULL_DOWN),
307 UNIPHIER_PINCTRL_PIN(94, "P_FE_ON", UNIPHIER_PIN_IECTRL_NONE, 305 UNIPHIER_PINCTRL_PIN(94, "P_FE_ON", UNIPHIER_PIN_IECTRL_NONE,
308 88, UNIPHIER_PIN_DRV_4_8, 306 88, UNIPHIER_PIN_DRV_1BIT,
309 88, UNIPHIER_PIN_PULL_DOWN), 307 88, UNIPHIER_PIN_PULL_DOWN),
310 UNIPHIER_PINCTRL_PIN(95, "P_TU0_ON", UNIPHIER_PIN_IECTRL_NONE, 308 UNIPHIER_PINCTRL_PIN(95, "P_TU0_ON", UNIPHIER_PIN_IECTRL_NONE,
311 89, UNIPHIER_PIN_DRV_4_8, 309 89, UNIPHIER_PIN_DRV_1BIT,
312 89, UNIPHIER_PIN_PULL_DOWN), 310 89, UNIPHIER_PIN_PULL_DOWN),
313 UNIPHIER_PINCTRL_PIN(96, "XFEIRQ0", UNIPHIER_PIN_IECTRL_NONE, 311 UNIPHIER_PINCTRL_PIN(96, "XFEIRQ0", UNIPHIER_PIN_IECTRL_NONE,
314 90, UNIPHIER_PIN_DRV_4_8, 312 90, UNIPHIER_PIN_DRV_1BIT,
315 90, UNIPHIER_PIN_PULL_DOWN), 313 90, UNIPHIER_PIN_PULL_DOWN),
316 UNIPHIER_PINCTRL_PIN(97, "XFEIRQ1", UNIPHIER_PIN_IECTRL_NONE, 314 UNIPHIER_PINCTRL_PIN(97, "XFEIRQ1", UNIPHIER_PIN_IECTRL_NONE,
317 91, UNIPHIER_PIN_DRV_4_8, 315 91, UNIPHIER_PIN_DRV_1BIT,
318 91, UNIPHIER_PIN_PULL_DOWN), 316 91, UNIPHIER_PIN_PULL_DOWN),
319 UNIPHIER_PINCTRL_PIN(98, "XFEIRQ2", UNIPHIER_PIN_IECTRL_NONE, 317 UNIPHIER_PINCTRL_PIN(98, "XFEIRQ2", UNIPHIER_PIN_IECTRL_NONE,
320 92, UNIPHIER_PIN_DRV_4_8, 318 92, UNIPHIER_PIN_DRV_1BIT,
321 92, UNIPHIER_PIN_PULL_DOWN), 319 92, UNIPHIER_PIN_PULL_DOWN),
322 UNIPHIER_PINCTRL_PIN(99, "XFEIRQ3", UNIPHIER_PIN_IECTRL_NONE, 320 UNIPHIER_PINCTRL_PIN(99, "XFEIRQ3", UNIPHIER_PIN_IECTRL_NONE,
323 93, UNIPHIER_PIN_DRV_4_8, 321 93, UNIPHIER_PIN_DRV_1BIT,
324 93, UNIPHIER_PIN_PULL_DOWN), 322 93, UNIPHIER_PIN_PULL_DOWN),
325 UNIPHIER_PINCTRL_PIN(100, "XFEIRQ4", UNIPHIER_PIN_IECTRL_NONE, 323 UNIPHIER_PINCTRL_PIN(100, "XFEIRQ4", UNIPHIER_PIN_IECTRL_NONE,
326 94, UNIPHIER_PIN_DRV_4_8, 324 94, UNIPHIER_PIN_DRV_1BIT,
327 94, UNIPHIER_PIN_PULL_DOWN), 325 94, UNIPHIER_PIN_PULL_DOWN),
328 UNIPHIER_PINCTRL_PIN(101, "XFEIRQ5", UNIPHIER_PIN_IECTRL_NONE, 326 UNIPHIER_PINCTRL_PIN(101, "XFEIRQ5", UNIPHIER_PIN_IECTRL_NONE,
329 95, UNIPHIER_PIN_DRV_4_8, 327 95, UNIPHIER_PIN_DRV_1BIT,
330 95, UNIPHIER_PIN_PULL_DOWN), 328 95, UNIPHIER_PIN_PULL_DOWN),
331 UNIPHIER_PINCTRL_PIN(102, "XFEIRQ6", UNIPHIER_PIN_IECTRL_NONE, 329 UNIPHIER_PINCTRL_PIN(102, "XFEIRQ6", UNIPHIER_PIN_IECTRL_NONE,
332 96, UNIPHIER_PIN_DRV_4_8, 330 96, UNIPHIER_PIN_DRV_1BIT,
333 96, UNIPHIER_PIN_PULL_DOWN), 331 96, UNIPHIER_PIN_PULL_DOWN),
334 UNIPHIER_PINCTRL_PIN(103, "SMTCLK0", UNIPHIER_PIN_IECTRL_NONE, 332 UNIPHIER_PINCTRL_PIN(103, "SMTCLK0", UNIPHIER_PIN_IECTRL_NONE,
335 97, UNIPHIER_PIN_DRV_4_8, 333 97, UNIPHIER_PIN_DRV_1BIT,
336 97, UNIPHIER_PIN_PULL_DOWN), 334 97, UNIPHIER_PIN_PULL_DOWN),
337 UNIPHIER_PINCTRL_PIN(104, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE, 335 UNIPHIER_PINCTRL_PIN(104, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE,
338 98, UNIPHIER_PIN_DRV_4_8, 336 98, UNIPHIER_PIN_DRV_1BIT,
339 98, UNIPHIER_PIN_PULL_DOWN), 337 98, UNIPHIER_PIN_PULL_DOWN),
340 UNIPHIER_PINCTRL_PIN(105, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE, 338 UNIPHIER_PINCTRL_PIN(105, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE,
341 99, UNIPHIER_PIN_DRV_4_8, 339 99, UNIPHIER_PIN_DRV_1BIT,
342 99, UNIPHIER_PIN_PULL_UP), 340 99, UNIPHIER_PIN_PULL_UP),
343 UNIPHIER_PINCTRL_PIN(106, "SMTD0", UNIPHIER_PIN_IECTRL_NONE, 341 UNIPHIER_PINCTRL_PIN(106, "SMTD0", UNIPHIER_PIN_IECTRL_NONE,
344 100, UNIPHIER_PIN_DRV_4_8, 342 100, UNIPHIER_PIN_DRV_1BIT,
345 100, UNIPHIER_PIN_PULL_UP), 343 100, UNIPHIER_PIN_PULL_UP),
346 UNIPHIER_PINCTRL_PIN(107, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE, 344 UNIPHIER_PINCTRL_PIN(107, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE,
347 101, UNIPHIER_PIN_DRV_4_8, 345 101, UNIPHIER_PIN_DRV_1BIT,
348 101, UNIPHIER_PIN_PULL_DOWN), 346 101, UNIPHIER_PIN_PULL_DOWN),
349 UNIPHIER_PINCTRL_PIN(108, "SMTDET0", UNIPHIER_PIN_IECTRL_NONE, 347 UNIPHIER_PINCTRL_PIN(108, "SMTDET0", UNIPHIER_PIN_IECTRL_NONE,
350 102, UNIPHIER_PIN_DRV_4_8, 348 102, UNIPHIER_PIN_DRV_1BIT,
351 102, UNIPHIER_PIN_PULL_UP), 349 102, UNIPHIER_PIN_PULL_UP),
352 UNIPHIER_PINCTRL_PIN(109, "SMTCLK1", UNIPHIER_PIN_IECTRL_NONE, 350 UNIPHIER_PINCTRL_PIN(109, "SMTCLK1", UNIPHIER_PIN_IECTRL_NONE,
353 103, UNIPHIER_PIN_DRV_4_8, 351 103, UNIPHIER_PIN_DRV_1BIT,
354 103, UNIPHIER_PIN_PULL_DOWN), 352 103, UNIPHIER_PIN_PULL_DOWN),
355 UNIPHIER_PINCTRL_PIN(110, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE, 353 UNIPHIER_PINCTRL_PIN(110, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE,
356 104, UNIPHIER_PIN_DRV_4_8, 354 104, UNIPHIER_PIN_DRV_1BIT,
357 104, UNIPHIER_PIN_PULL_DOWN), 355 104, UNIPHIER_PIN_PULL_DOWN),
358 UNIPHIER_PINCTRL_PIN(111, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE, 356 UNIPHIER_PINCTRL_PIN(111, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE,
359 105, UNIPHIER_PIN_DRV_4_8, 357 105, UNIPHIER_PIN_DRV_1BIT,
360 105, UNIPHIER_PIN_PULL_UP), 358 105, UNIPHIER_PIN_PULL_UP),
361 UNIPHIER_PINCTRL_PIN(112, "SMTD1", UNIPHIER_PIN_IECTRL_NONE, 359 UNIPHIER_PINCTRL_PIN(112, "SMTD1", UNIPHIER_PIN_IECTRL_NONE,
362 106, UNIPHIER_PIN_DRV_4_8, 360 106, UNIPHIER_PIN_DRV_1BIT,
363 106, UNIPHIER_PIN_PULL_UP), 361 106, UNIPHIER_PIN_PULL_UP),
364 UNIPHIER_PINCTRL_PIN(113, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE, 362 UNIPHIER_PINCTRL_PIN(113, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE,
365 107, UNIPHIER_PIN_DRV_4_8, 363 107, UNIPHIER_PIN_DRV_1BIT,
366 107, UNIPHIER_PIN_PULL_DOWN), 364 107, UNIPHIER_PIN_PULL_DOWN),
367 UNIPHIER_PINCTRL_PIN(114, "SMTDET1", UNIPHIER_PIN_IECTRL_NONE, 365 UNIPHIER_PINCTRL_PIN(114, "SMTDET1", UNIPHIER_PIN_IECTRL_NONE,
368 108, UNIPHIER_PIN_DRV_4_8, 366 108, UNIPHIER_PIN_DRV_1BIT,
369 108, UNIPHIER_PIN_PULL_UP), 367 108, UNIPHIER_PIN_PULL_UP),
370 UNIPHIER_PINCTRL_PIN(115, "XINTM", UNIPHIER_PIN_IECTRL_NONE, 368 UNIPHIER_PINCTRL_PIN(115, "XINTM", UNIPHIER_PIN_IECTRL_NONE,
371 109, UNIPHIER_PIN_DRV_4_8, 369 109, UNIPHIER_PIN_DRV_1BIT,
372 109, UNIPHIER_PIN_PULL_UP), 370 109, UNIPHIER_PIN_PULL_UP),
373 UNIPHIER_PINCTRL_PIN(116, "SCLKM", UNIPHIER_PIN_IECTRL_NONE, 371 UNIPHIER_PINCTRL_PIN(116, "SCLKM", UNIPHIER_PIN_IECTRL_NONE,
374 110, UNIPHIER_PIN_DRV_4_8, 372 110, UNIPHIER_PIN_DRV_1BIT,
375 110, UNIPHIER_PIN_PULL_UP), 373 110, UNIPHIER_PIN_PULL_UP),
376 UNIPHIER_PINCTRL_PIN(117, "SBMTP", UNIPHIER_PIN_IECTRL_NONE, 374 UNIPHIER_PINCTRL_PIN(117, "SBMTP", UNIPHIER_PIN_IECTRL_NONE,
377 111, UNIPHIER_PIN_DRV_4_8, 375 111, UNIPHIER_PIN_DRV_1BIT,
378 111, UNIPHIER_PIN_PULL_UP), 376 111, UNIPHIER_PIN_PULL_UP),
379 UNIPHIER_PINCTRL_PIN(118, "SBPTM", UNIPHIER_PIN_IECTRL_NONE, 377 UNIPHIER_PINCTRL_PIN(118, "SBPTM", UNIPHIER_PIN_IECTRL_NONE,
380 112, UNIPHIER_PIN_DRV_4_8, 378 112, UNIPHIER_PIN_DRV_1BIT,
381 112, UNIPHIER_PIN_PULL_UP), 379 112, UNIPHIER_PIN_PULL_UP),
382 UNIPHIER_PINCTRL_PIN(119, "XMPREQ", UNIPHIER_PIN_IECTRL_NONE, 380 UNIPHIER_PINCTRL_PIN(119, "XMPREQ", UNIPHIER_PIN_IECTRL_NONE,
383 113, UNIPHIER_PIN_DRV_4_8, 381 113, UNIPHIER_PIN_DRV_1BIT,
384 113, UNIPHIER_PIN_PULL_UP), 382 113, UNIPHIER_PIN_PULL_UP),
385 UNIPHIER_PINCTRL_PIN(120, "XINTP", UNIPHIER_PIN_IECTRL_NONE, 383 UNIPHIER_PINCTRL_PIN(120, "XINTP", UNIPHIER_PIN_IECTRL_NONE,
386 114, UNIPHIER_PIN_DRV_4_8, 384 114, UNIPHIER_PIN_DRV_1BIT,
387 114, UNIPHIER_PIN_PULL_UP), 385 114, UNIPHIER_PIN_PULL_UP),
388 UNIPHIER_PINCTRL_PIN(121, "LPST", UNIPHIER_PIN_IECTRL_NONE, 386 UNIPHIER_PINCTRL_PIN(121, "LPST", UNIPHIER_PIN_IECTRL_NONE,
389 115, UNIPHIER_PIN_DRV_4_8, 387 115, UNIPHIER_PIN_DRV_1BIT,
390 115, UNIPHIER_PIN_PULL_DOWN), 388 115, UNIPHIER_PIN_PULL_DOWN),
391 UNIPHIER_PINCTRL_PIN(122, "SDBOOT", UNIPHIER_PIN_IECTRL_NONE, 389 UNIPHIER_PINCTRL_PIN(122, "SDBOOT", UNIPHIER_PIN_IECTRL_NONE,
392 116, UNIPHIER_PIN_DRV_4_8, 390 116, UNIPHIER_PIN_DRV_1BIT,
393 116, UNIPHIER_PIN_PULL_UP), 391 116, UNIPHIER_PIN_PULL_UP),
394 UNIPHIER_PINCTRL_PIN(123, "BFAIL", UNIPHIER_PIN_IECTRL_NONE, 392 UNIPHIER_PINCTRL_PIN(123, "BFAIL", UNIPHIER_PIN_IECTRL_NONE,
395 117, UNIPHIER_PIN_DRV_4_8, 393 117, UNIPHIER_PIN_DRV_1BIT,
396 117, UNIPHIER_PIN_PULL_DOWN), 394 117, UNIPHIER_PIN_PULL_DOWN),
397 UNIPHIER_PINCTRL_PIN(124, "XFWE", UNIPHIER_PIN_IECTRL_NONE, 395 UNIPHIER_PINCTRL_PIN(124, "XFWE", UNIPHIER_PIN_IECTRL_NONE,
398 118, UNIPHIER_PIN_DRV_4_8, 396 118, UNIPHIER_PIN_DRV_1BIT,
399 118, UNIPHIER_PIN_PULL_UP), 397 118, UNIPHIER_PIN_PULL_UP),
400 UNIPHIER_PINCTRL_PIN(125, "RF_COM_RDY", UNIPHIER_PIN_IECTRL_NONE, 398 UNIPHIER_PINCTRL_PIN(125, "RF_COM_RDY", UNIPHIER_PIN_IECTRL_NONE,
401 119, UNIPHIER_PIN_DRV_4_8, 399 119, UNIPHIER_PIN_DRV_1BIT,
402 119, UNIPHIER_PIN_PULL_UP), 400 119, UNIPHIER_PIN_PULL_UP),
403 UNIPHIER_PINCTRL_PIN(126, "XDIAG0", UNIPHIER_PIN_IECTRL_NONE, 401 UNIPHIER_PINCTRL_PIN(126, "XDIAG0", UNIPHIER_PIN_IECTRL_NONE,
404 120, UNIPHIER_PIN_DRV_4_8, 402 120, UNIPHIER_PIN_DRV_1BIT,
405 120, UNIPHIER_PIN_PULL_UP), 403 120, UNIPHIER_PIN_PULL_UP),
406 UNIPHIER_PINCTRL_PIN(127, "RXD0", UNIPHIER_PIN_IECTRL_NONE, 404 UNIPHIER_PINCTRL_PIN(127, "RXD0", UNIPHIER_PIN_IECTRL_NONE,
407 121, UNIPHIER_PIN_DRV_4_8, 405 121, UNIPHIER_PIN_DRV_1BIT,
408 121, UNIPHIER_PIN_PULL_UP), 406 121, UNIPHIER_PIN_PULL_UP),
409 UNIPHIER_PINCTRL_PIN(128, "TXD0", UNIPHIER_PIN_IECTRL_NONE, 407 UNIPHIER_PINCTRL_PIN(128, "TXD0", UNIPHIER_PIN_IECTRL_NONE,
410 122, UNIPHIER_PIN_DRV_4_8, 408 122, UNIPHIER_PIN_DRV_1BIT,
411 122, UNIPHIER_PIN_PULL_UP), 409 122, UNIPHIER_PIN_PULL_UP),
412 UNIPHIER_PINCTRL_PIN(129, "RXD1", UNIPHIER_PIN_IECTRL_NONE, 410 UNIPHIER_PINCTRL_PIN(129, "RXD1", UNIPHIER_PIN_IECTRL_NONE,
413 123, UNIPHIER_PIN_DRV_4_8, 411 123, UNIPHIER_PIN_DRV_1BIT,
414 123, UNIPHIER_PIN_PULL_UP), 412 123, UNIPHIER_PIN_PULL_UP),
415 UNIPHIER_PINCTRL_PIN(130, "TXD1", UNIPHIER_PIN_IECTRL_NONE, 413 UNIPHIER_PINCTRL_PIN(130, "TXD1", UNIPHIER_PIN_IECTRL_NONE,
416 124, UNIPHIER_PIN_DRV_4_8, 414 124, UNIPHIER_PIN_DRV_1BIT,
417 124, UNIPHIER_PIN_PULL_UP), 415 124, UNIPHIER_PIN_PULL_UP),
418 UNIPHIER_PINCTRL_PIN(131, "RXD2", UNIPHIER_PIN_IECTRL_NONE, 416 UNIPHIER_PINCTRL_PIN(131, "RXD2", UNIPHIER_PIN_IECTRL_NONE,
419 125, UNIPHIER_PIN_DRV_4_8, 417 125, UNIPHIER_PIN_DRV_1BIT,
420 125, UNIPHIER_PIN_PULL_UP), 418 125, UNIPHIER_PIN_PULL_UP),
421 UNIPHIER_PINCTRL_PIN(132, "TXD2", UNIPHIER_PIN_IECTRL_NONE, 419 UNIPHIER_PINCTRL_PIN(132, "TXD2", UNIPHIER_PIN_IECTRL_NONE,
422 126, UNIPHIER_PIN_DRV_4_8, 420 126, UNIPHIER_PIN_DRV_1BIT,
423 126, UNIPHIER_PIN_PULL_UP), 421 126, UNIPHIER_PIN_PULL_UP),
424 UNIPHIER_PINCTRL_PIN(133, "SS0CS", UNIPHIER_PIN_IECTRL_NONE, 422 UNIPHIER_PINCTRL_PIN(133, "SS0CS", UNIPHIER_PIN_IECTRL_NONE,
425 127, UNIPHIER_PIN_DRV_4_8, 423 127, UNIPHIER_PIN_DRV_1BIT,
426 127, UNIPHIER_PIN_PULL_UP), 424 127, UNIPHIER_PIN_PULL_UP),
427 UNIPHIER_PINCTRL_PIN(134, "SS0CLK", UNIPHIER_PIN_IECTRL_NONE, 425 UNIPHIER_PINCTRL_PIN(134, "SS0CLK", UNIPHIER_PIN_IECTRL_NONE,
428 128, UNIPHIER_PIN_DRV_4_8, 426 128, UNIPHIER_PIN_DRV_1BIT,
429 128, UNIPHIER_PIN_PULL_UP), 427 128, UNIPHIER_PIN_PULL_UP),
430 UNIPHIER_PINCTRL_PIN(135, "SS0DO", UNIPHIER_PIN_IECTRL_NONE, 428 UNIPHIER_PINCTRL_PIN(135, "SS0DO", UNIPHIER_PIN_IECTRL_NONE,
431 129, UNIPHIER_PIN_DRV_4_8, 429 129, UNIPHIER_PIN_DRV_1BIT,
432 129, UNIPHIER_PIN_PULL_UP), 430 129, UNIPHIER_PIN_PULL_UP),
433 UNIPHIER_PINCTRL_PIN(136, "SS0DI", UNIPHIER_PIN_IECTRL_NONE, 431 UNIPHIER_PINCTRL_PIN(136, "SS0DI", UNIPHIER_PIN_IECTRL_NONE,
434 130, UNIPHIER_PIN_DRV_4_8, 432 130, UNIPHIER_PIN_DRV_1BIT,
435 130, UNIPHIER_PIN_PULL_UP), 433 130, UNIPHIER_PIN_PULL_UP),
436 UNIPHIER_PINCTRL_PIN(137, "MS0CS0", UNIPHIER_PIN_IECTRL_NONE, 434 UNIPHIER_PINCTRL_PIN(137, "MS0CS0", UNIPHIER_PIN_IECTRL_NONE,
437 131, UNIPHIER_PIN_DRV_4_8, 435 131, UNIPHIER_PIN_DRV_1BIT,
438 131, UNIPHIER_PIN_PULL_UP), 436 131, UNIPHIER_PIN_PULL_UP),
439 UNIPHIER_PINCTRL_PIN(138, "MS0CLK", UNIPHIER_PIN_IECTRL_NONE, 437 UNIPHIER_PINCTRL_PIN(138, "MS0CLK", UNIPHIER_PIN_IECTRL_NONE,
440 132, UNIPHIER_PIN_DRV_4_8, 438 132, UNIPHIER_PIN_DRV_1BIT,
441 132, UNIPHIER_PIN_PULL_UP), 439 132, UNIPHIER_PIN_PULL_UP),
442 UNIPHIER_PINCTRL_PIN(139, "MS0DI", UNIPHIER_PIN_IECTRL_NONE, 440 UNIPHIER_PINCTRL_PIN(139, "MS0DI", UNIPHIER_PIN_IECTRL_NONE,
443 133, UNIPHIER_PIN_DRV_4_8, 441 133, UNIPHIER_PIN_DRV_1BIT,
444 133, UNIPHIER_PIN_PULL_UP), 442 133, UNIPHIER_PIN_PULL_UP),
445 UNIPHIER_PINCTRL_PIN(140, "MS0DO", UNIPHIER_PIN_IECTRL_NONE, 443 UNIPHIER_PINCTRL_PIN(140, "MS0DO", UNIPHIER_PIN_IECTRL_NONE,
446 134, UNIPHIER_PIN_DRV_4_8, 444 134, UNIPHIER_PIN_DRV_1BIT,
447 134, UNIPHIER_PIN_PULL_UP), 445 134, UNIPHIER_PIN_PULL_UP),
448 UNIPHIER_PINCTRL_PIN(141, "XMDMRST", UNIPHIER_PIN_IECTRL_NONE, 446 UNIPHIER_PINCTRL_PIN(141, "XMDMRST", UNIPHIER_PIN_IECTRL_NONE,
449 135, UNIPHIER_PIN_DRV_4_8, 447 135, UNIPHIER_PIN_DRV_1BIT,
450 135, UNIPHIER_PIN_PULL_DOWN), 448 135, UNIPHIER_PIN_PULL_DOWN),
451 UNIPHIER_PINCTRL_PIN(142, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 449 UNIPHIER_PINCTRL_PIN(142, "SCL0", UNIPHIER_PIN_IECTRL_NONE,
452 -1, UNIPHIER_PIN_DRV_FIXED_4, 450 -1, UNIPHIER_PIN_DRV_FIXED4,
453 -1, UNIPHIER_PIN_PULL_NONE), 451 -1, UNIPHIER_PIN_PULL_NONE),
454 UNIPHIER_PINCTRL_PIN(143, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 452 UNIPHIER_PINCTRL_PIN(143, "SDA0", UNIPHIER_PIN_IECTRL_NONE,
455 -1, UNIPHIER_PIN_DRV_FIXED_4, 453 -1, UNIPHIER_PIN_DRV_FIXED4,
456 -1, UNIPHIER_PIN_PULL_NONE), 454 -1, UNIPHIER_PIN_PULL_NONE),
457 UNIPHIER_PINCTRL_PIN(144, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 455 UNIPHIER_PINCTRL_PIN(144, "SCL1", UNIPHIER_PIN_IECTRL_NONE,
458 -1, UNIPHIER_PIN_DRV_FIXED_4, 456 -1, UNIPHIER_PIN_DRV_FIXED4,
459 -1, UNIPHIER_PIN_PULL_NONE), 457 -1, UNIPHIER_PIN_PULL_NONE),
460 UNIPHIER_PINCTRL_PIN(145, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 458 UNIPHIER_PINCTRL_PIN(145, "SDA1", UNIPHIER_PIN_IECTRL_NONE,
461 -1, UNIPHIER_PIN_DRV_FIXED_4, 459 -1, UNIPHIER_PIN_DRV_FIXED4,
462 -1, UNIPHIER_PIN_PULL_NONE), 460 -1, UNIPHIER_PIN_PULL_NONE),
463 UNIPHIER_PINCTRL_PIN(146, "SCL2", UNIPHIER_PIN_IECTRL_NONE, 461 UNIPHIER_PINCTRL_PIN(146, "SCL2", UNIPHIER_PIN_IECTRL_NONE,
464 -1, UNIPHIER_PIN_DRV_FIXED_4, 462 -1, UNIPHIER_PIN_DRV_FIXED4,
465 -1, UNIPHIER_PIN_PULL_NONE), 463 -1, UNIPHIER_PIN_PULL_NONE),
466 UNIPHIER_PINCTRL_PIN(147, "SDA2", UNIPHIER_PIN_IECTRL_NONE, 464 UNIPHIER_PINCTRL_PIN(147, "SDA2", UNIPHIER_PIN_IECTRL_NONE,
467 -1, UNIPHIER_PIN_DRV_FIXED_4, 465 -1, UNIPHIER_PIN_DRV_FIXED4,
468 -1, UNIPHIER_PIN_PULL_NONE), 466 -1, UNIPHIER_PIN_PULL_NONE),
469 UNIPHIER_PINCTRL_PIN(148, "SCL3", UNIPHIER_PIN_IECTRL_NONE, 467 UNIPHIER_PINCTRL_PIN(148, "SCL3", UNIPHIER_PIN_IECTRL_NONE,
470 -1, UNIPHIER_PIN_DRV_FIXED_4, 468 -1, UNIPHIER_PIN_DRV_FIXED4,
471 -1, UNIPHIER_PIN_PULL_NONE), 469 -1, UNIPHIER_PIN_PULL_NONE),
472 UNIPHIER_PINCTRL_PIN(149, "SDA3", UNIPHIER_PIN_IECTRL_NONE, 470 UNIPHIER_PINCTRL_PIN(149, "SDA3", UNIPHIER_PIN_IECTRL_NONE,
473 -1, UNIPHIER_PIN_DRV_FIXED_4, 471 -1, UNIPHIER_PIN_DRV_FIXED4,
474 -1, UNIPHIER_PIN_PULL_NONE), 472 -1, UNIPHIER_PIN_PULL_NONE),
475 UNIPHIER_PINCTRL_PIN(150, "SD0DAT0", UNIPHIER_PIN_IECTRL_NONE, 473 UNIPHIER_PINCTRL_PIN(150, "SD0DAT0", UNIPHIER_PIN_IECTRL_NONE,
476 12, UNIPHIER_PIN_DRV_8_12_16_20, 474 12, UNIPHIER_PIN_DRV_2BIT,
477 136, UNIPHIER_PIN_PULL_UP), 475 136, UNIPHIER_PIN_PULL_UP),
478 UNIPHIER_PINCTRL_PIN(151, "SD0DAT1", UNIPHIER_PIN_IECTRL_NONE, 476 UNIPHIER_PINCTRL_PIN(151, "SD0DAT1", UNIPHIER_PIN_IECTRL_NONE,
479 13, UNIPHIER_PIN_DRV_8_12_16_20, 477 13, UNIPHIER_PIN_DRV_2BIT,
480 137, UNIPHIER_PIN_PULL_UP), 478 137, UNIPHIER_PIN_PULL_UP),
481 UNIPHIER_PINCTRL_PIN(152, "SD0DAT2", UNIPHIER_PIN_IECTRL_NONE, 479 UNIPHIER_PINCTRL_PIN(152, "SD0DAT2", UNIPHIER_PIN_IECTRL_NONE,
482 14, UNIPHIER_PIN_DRV_8_12_16_20, 480 14, UNIPHIER_PIN_DRV_2BIT,
483 138, UNIPHIER_PIN_PULL_UP), 481 138, UNIPHIER_PIN_PULL_UP),
484 UNIPHIER_PINCTRL_PIN(153, "SD0DAT3", UNIPHIER_PIN_IECTRL_NONE, 482 UNIPHIER_PINCTRL_PIN(153, "SD0DAT3", UNIPHIER_PIN_IECTRL_NONE,
485 15, UNIPHIER_PIN_DRV_8_12_16_20, 483 15, UNIPHIER_PIN_DRV_2BIT,
486 139, UNIPHIER_PIN_PULL_UP), 484 139, UNIPHIER_PIN_PULL_UP),
487 UNIPHIER_PINCTRL_PIN(154, "SD0CMD", UNIPHIER_PIN_IECTRL_NONE, 485 UNIPHIER_PINCTRL_PIN(154, "SD0CMD", UNIPHIER_PIN_IECTRL_NONE,
488 11, UNIPHIER_PIN_DRV_8_12_16_20, 486 11, UNIPHIER_PIN_DRV_2BIT,
489 141, UNIPHIER_PIN_PULL_UP), 487 141, UNIPHIER_PIN_PULL_UP),
490 UNIPHIER_PINCTRL_PIN(155, "SD0CLK", UNIPHIER_PIN_IECTRL_NONE, 488 UNIPHIER_PINCTRL_PIN(155, "SD0CLK", UNIPHIER_PIN_IECTRL_NONE,
491 10, UNIPHIER_PIN_DRV_8_12_16_20, 489 10, UNIPHIER_PIN_DRV_2BIT,
492 140, UNIPHIER_PIN_PULL_UP), 490 140, UNIPHIER_PIN_PULL_UP),
493 UNIPHIER_PINCTRL_PIN(156, "SD0CD", UNIPHIER_PIN_IECTRL_NONE, 491 UNIPHIER_PINCTRL_PIN(156, "SD0CD", UNIPHIER_PIN_IECTRL_NONE,
494 142, UNIPHIER_PIN_DRV_4_8, 492 142, UNIPHIER_PIN_DRV_1BIT,
495 142, UNIPHIER_PIN_PULL_UP), 493 142, UNIPHIER_PIN_PULL_UP),
496 UNIPHIER_PINCTRL_PIN(157, "SD0WP", UNIPHIER_PIN_IECTRL_NONE, 494 UNIPHIER_PINCTRL_PIN(157, "SD0WP", UNIPHIER_PIN_IECTRL_NONE,
497 143, UNIPHIER_PIN_DRV_4_8, 495 143, UNIPHIER_PIN_DRV_1BIT,
498 143, UNIPHIER_PIN_PULL_UP), 496 143, UNIPHIER_PIN_PULL_UP),
499 UNIPHIER_PINCTRL_PIN(158, "SD0VTCG", UNIPHIER_PIN_IECTRL_NONE, 497 UNIPHIER_PINCTRL_PIN(158, "SD0VTCG", UNIPHIER_PIN_IECTRL_NONE,
500 144, UNIPHIER_PIN_DRV_4_8, 498 144, UNIPHIER_PIN_DRV_1BIT,
501 144, UNIPHIER_PIN_PULL_UP), 499 144, UNIPHIER_PIN_PULL_UP),
502 UNIPHIER_PINCTRL_PIN(159, "CK25O", UNIPHIER_PIN_IECTRL_NONE, 500 UNIPHIER_PINCTRL_PIN(159, "CK25O", UNIPHIER_PIN_IECTRL_NONE,
503 145, UNIPHIER_PIN_DRV_4_8, 501 145, UNIPHIER_PIN_DRV_1BIT,
504 145, UNIPHIER_PIN_PULL_UP), 502 145, UNIPHIER_PIN_PULL_UP),
505 UNIPHIER_PINCTRL_PIN(160, "RGMII_TXCLK", 6, 503 UNIPHIER_PINCTRL_PIN(160, "RGMII_TXCLK", 6,
506 146, UNIPHIER_PIN_DRV_4_8, 504 146, UNIPHIER_PIN_DRV_1BIT,
507 146, UNIPHIER_PIN_PULL_DOWN), 505 146, UNIPHIER_PIN_PULL_DOWN),
508 UNIPHIER_PINCTRL_PIN(161, "RGMII_TXD0", 6, 506 UNIPHIER_PINCTRL_PIN(161, "RGMII_TXD0", 6,
509 147, UNIPHIER_PIN_DRV_4_8, 507 147, UNIPHIER_PIN_DRV_1BIT,
510 147, UNIPHIER_PIN_PULL_DOWN), 508 147, UNIPHIER_PIN_PULL_DOWN),
511 UNIPHIER_PINCTRL_PIN(162, "RGMII_TXD1", 6, 509 UNIPHIER_PINCTRL_PIN(162, "RGMII_TXD1", 6,
512 148, UNIPHIER_PIN_DRV_4_8, 510 148, UNIPHIER_PIN_DRV_1BIT,
513 148, UNIPHIER_PIN_PULL_DOWN), 511 148, UNIPHIER_PIN_PULL_DOWN),
514 UNIPHIER_PINCTRL_PIN(163, "RGMII_TXD2", 6, 512 UNIPHIER_PINCTRL_PIN(163, "RGMII_TXD2", 6,
515 149, UNIPHIER_PIN_DRV_4_8, 513 149, UNIPHIER_PIN_DRV_1BIT,
516 149, UNIPHIER_PIN_PULL_DOWN), 514 149, UNIPHIER_PIN_PULL_DOWN),
517 UNIPHIER_PINCTRL_PIN(164, "RGMII_TXD3", 6, 515 UNIPHIER_PINCTRL_PIN(164, "RGMII_TXD3", 6,
518 150, UNIPHIER_PIN_DRV_4_8, 516 150, UNIPHIER_PIN_DRV_1BIT,
519 150, UNIPHIER_PIN_PULL_DOWN), 517 150, UNIPHIER_PIN_PULL_DOWN),
520 UNIPHIER_PINCTRL_PIN(165, "RGMII_TXCTL", 6, 518 UNIPHIER_PINCTRL_PIN(165, "RGMII_TXCTL", 6,
521 151, UNIPHIER_PIN_DRV_4_8, 519 151, UNIPHIER_PIN_DRV_1BIT,
522 151, UNIPHIER_PIN_PULL_DOWN), 520 151, UNIPHIER_PIN_PULL_DOWN),
523 UNIPHIER_PINCTRL_PIN(166, "MII_TXER", UNIPHIER_PIN_IECTRL_NONE, 521 UNIPHIER_PINCTRL_PIN(166, "MII_TXER", UNIPHIER_PIN_IECTRL_NONE,
524 152, UNIPHIER_PIN_DRV_4_8, 522 152, UNIPHIER_PIN_DRV_1BIT,
525 152, UNIPHIER_PIN_PULL_DOWN), 523 152, UNIPHIER_PIN_PULL_DOWN),
526 UNIPHIER_PINCTRL_PIN(167, "RGMII_RXCLK", 6, 524 UNIPHIER_PINCTRL_PIN(167, "RGMII_RXCLK", 6,
527 153, UNIPHIER_PIN_DRV_4_8, 525 153, UNIPHIER_PIN_DRV_1BIT,
528 153, UNIPHIER_PIN_PULL_DOWN), 526 153, UNIPHIER_PIN_PULL_DOWN),
529 UNIPHIER_PINCTRL_PIN(168, "RGMII_RXD0", 6, 527 UNIPHIER_PINCTRL_PIN(168, "RGMII_RXD0", 6,
530 154, UNIPHIER_PIN_DRV_4_8, 528 154, UNIPHIER_PIN_DRV_1BIT,
531 154, UNIPHIER_PIN_PULL_DOWN), 529 154, UNIPHIER_PIN_PULL_DOWN),
532 UNIPHIER_PINCTRL_PIN(169, "RGMII_RXD1", 6, 530 UNIPHIER_PINCTRL_PIN(169, "RGMII_RXD1", 6,
533 155, UNIPHIER_PIN_DRV_4_8, 531 155, UNIPHIER_PIN_DRV_1BIT,
534 155, UNIPHIER_PIN_PULL_DOWN), 532 155, UNIPHIER_PIN_PULL_DOWN),
535 UNIPHIER_PINCTRL_PIN(170, "RGMII_RXD2", 6, 533 UNIPHIER_PINCTRL_PIN(170, "RGMII_RXD2", 6,
536 156, UNIPHIER_PIN_DRV_4_8, 534 156, UNIPHIER_PIN_DRV_1BIT,
537 156, UNIPHIER_PIN_PULL_DOWN), 535 156, UNIPHIER_PIN_PULL_DOWN),
538 UNIPHIER_PINCTRL_PIN(171, "RGMII_RXD3", 6, 536 UNIPHIER_PINCTRL_PIN(171, "RGMII_RXD3", 6,
539 157, UNIPHIER_PIN_DRV_4_8, 537 157, UNIPHIER_PIN_DRV_1BIT,
540 157, UNIPHIER_PIN_PULL_DOWN), 538 157, UNIPHIER_PIN_PULL_DOWN),
541 UNIPHIER_PINCTRL_PIN(172, "RGMII_RXCTL", 6, 539 UNIPHIER_PINCTRL_PIN(172, "RGMII_RXCTL", 6,
542 158, UNIPHIER_PIN_DRV_4_8, 540 158, UNIPHIER_PIN_DRV_1BIT,
543 158, UNIPHIER_PIN_PULL_DOWN), 541 158, UNIPHIER_PIN_PULL_DOWN),
544 UNIPHIER_PINCTRL_PIN(173, "MII_RXER", 6, 542 UNIPHIER_PINCTRL_PIN(173, "MII_RXER", 6,
545 159, UNIPHIER_PIN_DRV_4_8, 543 159, UNIPHIER_PIN_DRV_1BIT,
546 159, UNIPHIER_PIN_PULL_DOWN), 544 159, UNIPHIER_PIN_PULL_DOWN),
547 UNIPHIER_PINCTRL_PIN(174, "MII_CRS", 6, 545 UNIPHIER_PINCTRL_PIN(174, "MII_CRS", 6,
548 160, UNIPHIER_PIN_DRV_4_8, 546 160, UNIPHIER_PIN_DRV_1BIT,
549 160, UNIPHIER_PIN_PULL_DOWN), 547 160, UNIPHIER_PIN_PULL_DOWN),
550 UNIPHIER_PINCTRL_PIN(175, "MII_COL", 6, 548 UNIPHIER_PINCTRL_PIN(175, "MII_COL", 6,
551 161, UNIPHIER_PIN_DRV_4_8, 549 161, UNIPHIER_PIN_DRV_1BIT,
552 161, UNIPHIER_PIN_PULL_DOWN), 550 161, UNIPHIER_PIN_PULL_DOWN),
553 UNIPHIER_PINCTRL_PIN(176, "MDC", 6, 551 UNIPHIER_PINCTRL_PIN(176, "MDC", 6,
554 162, UNIPHIER_PIN_DRV_4_8, 552 162, UNIPHIER_PIN_DRV_1BIT,
555 162, UNIPHIER_PIN_PULL_UP), 553 162, UNIPHIER_PIN_PULL_UP),
556 UNIPHIER_PINCTRL_PIN(177, "MDIO", 6, 554 UNIPHIER_PINCTRL_PIN(177, "MDIO", 6,
557 163, UNIPHIER_PIN_DRV_4_8, 555 163, UNIPHIER_PIN_DRV_1BIT,
558 163, UNIPHIER_PIN_PULL_UP), 556 163, UNIPHIER_PIN_PULL_UP),
559 UNIPHIER_PINCTRL_PIN(178, "MDIO_INTL", 6, 557 UNIPHIER_PINCTRL_PIN(178, "MDIO_INTL", 6,
560 164, UNIPHIER_PIN_DRV_4_8, 558 164, UNIPHIER_PIN_DRV_1BIT,
561 164, UNIPHIER_PIN_PULL_UP), 559 164, UNIPHIER_PIN_PULL_UP),
562 UNIPHIER_PINCTRL_PIN(179, "XETH_RST", 6, 560 UNIPHIER_PINCTRL_PIN(179, "XETH_RST", 6,
563 165, UNIPHIER_PIN_DRV_4_8, 561 165, UNIPHIER_PIN_DRV_1BIT,
564 165, UNIPHIER_PIN_PULL_DOWN), 562 165, UNIPHIER_PIN_PULL_DOWN),
565 UNIPHIER_PINCTRL_PIN(180, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 563 UNIPHIER_PINCTRL_PIN(180, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE,
566 166, UNIPHIER_PIN_DRV_4_8, 564 166, UNIPHIER_PIN_DRV_1BIT,
567 166, UNIPHIER_PIN_PULL_DOWN), 565 166, UNIPHIER_PIN_PULL_DOWN),
568 UNIPHIER_PINCTRL_PIN(181, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 566 UNIPHIER_PINCTRL_PIN(181, "USB0OD", UNIPHIER_PIN_IECTRL_NONE,
569 167, UNIPHIER_PIN_DRV_4_8, 567 167, UNIPHIER_PIN_DRV_1BIT,
570 167, UNIPHIER_PIN_PULL_UP), 568 167, UNIPHIER_PIN_PULL_UP),
571 UNIPHIER_PINCTRL_PIN(182, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 569 UNIPHIER_PINCTRL_PIN(182, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE,
572 168, UNIPHIER_PIN_DRV_4_8, 570 168, UNIPHIER_PIN_DRV_1BIT,
573 168, UNIPHIER_PIN_PULL_DOWN), 571 168, UNIPHIER_PIN_PULL_DOWN),
574 UNIPHIER_PINCTRL_PIN(183, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 572 UNIPHIER_PINCTRL_PIN(183, "USB1OD", UNIPHIER_PIN_IECTRL_NONE,
575 169, UNIPHIER_PIN_DRV_4_8, 573 169, UNIPHIER_PIN_DRV_1BIT,
576 169, UNIPHIER_PIN_PULL_UP), 574 169, UNIPHIER_PIN_PULL_UP),
577 UNIPHIER_PINCTRL_PIN(184, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 575 UNIPHIER_PINCTRL_PIN(184, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE,
578 170, UNIPHIER_PIN_DRV_4_8, 576 170, UNIPHIER_PIN_DRV_1BIT,
579 170, UNIPHIER_PIN_PULL_DOWN), 577 170, UNIPHIER_PIN_PULL_DOWN),
580 UNIPHIER_PINCTRL_PIN(185, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 578 UNIPHIER_PINCTRL_PIN(185, "USB2OD", UNIPHIER_PIN_IECTRL_NONE,
581 171, UNIPHIER_PIN_DRV_4_8, 579 171, UNIPHIER_PIN_DRV_1BIT,
582 171, UNIPHIER_PIN_PULL_UP), 580 171, UNIPHIER_PIN_PULL_UP),
583 UNIPHIER_PINCTRL_PIN(186, "USB2ID", UNIPHIER_PIN_IECTRL_NONE, 581 UNIPHIER_PINCTRL_PIN(186, "USB2ID", UNIPHIER_PIN_IECTRL_NONE,
584 172, UNIPHIER_PIN_DRV_4_8, 582 172, UNIPHIER_PIN_DRV_1BIT,
585 172, UNIPHIER_PIN_PULL_UP), 583 172, UNIPHIER_PIN_PULL_UP),
586 UNIPHIER_PINCTRL_PIN(187, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE, 584 UNIPHIER_PINCTRL_PIN(187, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE,
587 173, UNIPHIER_PIN_DRV_4_8, 585 173, UNIPHIER_PIN_DRV_1BIT,
588 173, UNIPHIER_PIN_PULL_DOWN), 586 173, UNIPHIER_PIN_PULL_DOWN),
589 UNIPHIER_PINCTRL_PIN(188, "USB3OD", UNIPHIER_PIN_IECTRL_NONE, 587 UNIPHIER_PINCTRL_PIN(188, "USB3OD", UNIPHIER_PIN_IECTRL_NONE,
590 174, UNIPHIER_PIN_DRV_4_8, 588 174, UNIPHIER_PIN_DRV_1BIT,
591 174, UNIPHIER_PIN_PULL_UP), 589 174, UNIPHIER_PIN_PULL_UP),
592 UNIPHIER_PINCTRL_PIN(189, "LINKCLK", UNIPHIER_PIN_IECTRL_NONE, 590 UNIPHIER_PINCTRL_PIN(189, "LINKCLK", UNIPHIER_PIN_IECTRL_NONE,
593 175, UNIPHIER_PIN_DRV_4_8, 591 175, UNIPHIER_PIN_DRV_1BIT,
594 175, UNIPHIER_PIN_PULL_DOWN), 592 175, UNIPHIER_PIN_PULL_DOWN),
595 UNIPHIER_PINCTRL_PIN(190, "LINKREQ", UNIPHIER_PIN_IECTRL_NONE, 593 UNIPHIER_PINCTRL_PIN(190, "LINKREQ", UNIPHIER_PIN_IECTRL_NONE,
596 176, UNIPHIER_PIN_DRV_4_8, 594 176, UNIPHIER_PIN_DRV_1BIT,
597 176, UNIPHIER_PIN_PULL_DOWN), 595 176, UNIPHIER_PIN_PULL_DOWN),
598 UNIPHIER_PINCTRL_PIN(191, "LINKCTL0", UNIPHIER_PIN_IECTRL_NONE, 596 UNIPHIER_PINCTRL_PIN(191, "LINKCTL0", UNIPHIER_PIN_IECTRL_NONE,
599 177, UNIPHIER_PIN_DRV_4_8, 597 177, UNIPHIER_PIN_DRV_1BIT,
600 177, UNIPHIER_PIN_PULL_DOWN), 598 177, UNIPHIER_PIN_PULL_DOWN),
601 UNIPHIER_PINCTRL_PIN(192, "LINKCTL1", UNIPHIER_PIN_IECTRL_NONE, 599 UNIPHIER_PINCTRL_PIN(192, "LINKCTL1", UNIPHIER_PIN_IECTRL_NONE,
602 178, UNIPHIER_PIN_DRV_4_8, 600 178, UNIPHIER_PIN_DRV_1BIT,
603 178, UNIPHIER_PIN_PULL_DOWN), 601 178, UNIPHIER_PIN_PULL_DOWN),
604 UNIPHIER_PINCTRL_PIN(193, "LINKDT0", UNIPHIER_PIN_IECTRL_NONE, 602 UNIPHIER_PINCTRL_PIN(193, "LINKDT0", UNIPHIER_PIN_IECTRL_NONE,
605 179, UNIPHIER_PIN_DRV_4_8, 603 179, UNIPHIER_PIN_DRV_1BIT,
606 179, UNIPHIER_PIN_PULL_DOWN), 604 179, UNIPHIER_PIN_PULL_DOWN),
607 UNIPHIER_PINCTRL_PIN(194, "LINKDT1", UNIPHIER_PIN_IECTRL_NONE, 605 UNIPHIER_PINCTRL_PIN(194, "LINKDT1", UNIPHIER_PIN_IECTRL_NONE,
608 180, UNIPHIER_PIN_DRV_4_8, 606 180, UNIPHIER_PIN_DRV_1BIT,
609 180, UNIPHIER_PIN_PULL_DOWN), 607 180, UNIPHIER_PIN_PULL_DOWN),
610 UNIPHIER_PINCTRL_PIN(195, "LINKDT2", UNIPHIER_PIN_IECTRL_NONE, 608 UNIPHIER_PINCTRL_PIN(195, "LINKDT2", UNIPHIER_PIN_IECTRL_NONE,
611 181, UNIPHIER_PIN_DRV_4_8, 609 181, UNIPHIER_PIN_DRV_1BIT,
612 181, UNIPHIER_PIN_PULL_DOWN), 610 181, UNIPHIER_PIN_PULL_DOWN),
613 UNIPHIER_PINCTRL_PIN(196, "LINKDT3", UNIPHIER_PIN_IECTRL_NONE, 611 UNIPHIER_PINCTRL_PIN(196, "LINKDT3", UNIPHIER_PIN_IECTRL_NONE,
614 182, UNIPHIER_PIN_DRV_4_8, 612 182, UNIPHIER_PIN_DRV_1BIT,
615 182, UNIPHIER_PIN_PULL_DOWN), 613 182, UNIPHIER_PIN_PULL_DOWN),
616 UNIPHIER_PINCTRL_PIN(197, "LINKDT4", UNIPHIER_PIN_IECTRL_NONE, 614 UNIPHIER_PINCTRL_PIN(197, "LINKDT4", UNIPHIER_PIN_IECTRL_NONE,
617 183, UNIPHIER_PIN_DRV_4_8, 615 183, UNIPHIER_PIN_DRV_1BIT,
618 183, UNIPHIER_PIN_PULL_DOWN), 616 183, UNIPHIER_PIN_PULL_DOWN),
619 UNIPHIER_PINCTRL_PIN(198, "LINKDT5", UNIPHIER_PIN_IECTRL_NONE, 617 UNIPHIER_PINCTRL_PIN(198, "LINKDT5", UNIPHIER_PIN_IECTRL_NONE,
620 184, UNIPHIER_PIN_DRV_4_8, 618 184, UNIPHIER_PIN_DRV_1BIT,
621 184, UNIPHIER_PIN_PULL_DOWN), 619 184, UNIPHIER_PIN_PULL_DOWN),
622 UNIPHIER_PINCTRL_PIN(199, "LINKDT6", UNIPHIER_PIN_IECTRL_NONE, 620 UNIPHIER_PINCTRL_PIN(199, "LINKDT6", UNIPHIER_PIN_IECTRL_NONE,
623 185, UNIPHIER_PIN_DRV_4_8, 621 185, UNIPHIER_PIN_DRV_1BIT,
624 185, UNIPHIER_PIN_PULL_DOWN), 622 185, UNIPHIER_PIN_PULL_DOWN),
625 UNIPHIER_PINCTRL_PIN(200, "LINKDT7", UNIPHIER_PIN_IECTRL_NONE, 623 UNIPHIER_PINCTRL_PIN(200, "LINKDT7", UNIPHIER_PIN_IECTRL_NONE,
626 186, UNIPHIER_PIN_DRV_4_8, 624 186, UNIPHIER_PIN_DRV_1BIT,
627 186, UNIPHIER_PIN_PULL_DOWN), 625 186, UNIPHIER_PIN_PULL_DOWN),
628 UNIPHIER_PINCTRL_PIN(201, "CKDVO", UNIPHIER_PIN_IECTRL_NONE, 626 UNIPHIER_PINCTRL_PIN(201, "CKDVO", UNIPHIER_PIN_IECTRL_NONE,
629 187, UNIPHIER_PIN_DRV_4_8, 627 187, UNIPHIER_PIN_DRV_1BIT,
630 187, UNIPHIER_PIN_PULL_DOWN), 628 187, UNIPHIER_PIN_PULL_DOWN),
631 UNIPHIER_PINCTRL_PIN(202, "PHY_PD", UNIPHIER_PIN_IECTRL_NONE, 629 UNIPHIER_PINCTRL_PIN(202, "PHY_PD", UNIPHIER_PIN_IECTRL_NONE,
632 188, UNIPHIER_PIN_DRV_4_8, 630 188, UNIPHIER_PIN_DRV_1BIT,
633 188, UNIPHIER_PIN_PULL_DOWN), 631 188, UNIPHIER_PIN_PULL_DOWN),
634 UNIPHIER_PINCTRL_PIN(203, "X1394_RST", UNIPHIER_PIN_IECTRL_NONE, 632 UNIPHIER_PINCTRL_PIN(203, "X1394_RST", UNIPHIER_PIN_IECTRL_NONE,
635 189, UNIPHIER_PIN_DRV_4_8, 633 189, UNIPHIER_PIN_DRV_1BIT,
636 189, UNIPHIER_PIN_PULL_DOWN), 634 189, UNIPHIER_PIN_PULL_DOWN),
637 UNIPHIER_PINCTRL_PIN(204, "VOUT_MUTE_L", UNIPHIER_PIN_IECTRL_NONE, 635 UNIPHIER_PINCTRL_PIN(204, "VOUT_MUTE_L", UNIPHIER_PIN_IECTRL_NONE,
638 190, UNIPHIER_PIN_DRV_4_8, 636 190, UNIPHIER_PIN_DRV_1BIT,
639 190, UNIPHIER_PIN_PULL_DOWN), 637 190, UNIPHIER_PIN_PULL_DOWN),
640 UNIPHIER_PINCTRL_PIN(205, "CLK54O", UNIPHIER_PIN_IECTRL_NONE, 638 UNIPHIER_PINCTRL_PIN(205, "CLK54O", UNIPHIER_PIN_IECTRL_NONE,
641 191, UNIPHIER_PIN_DRV_4_8, 639 191, UNIPHIER_PIN_DRV_1BIT,
642 191, UNIPHIER_PIN_PULL_DOWN), 640 191, UNIPHIER_PIN_PULL_DOWN),
643 UNIPHIER_PINCTRL_PIN(206, "CLK54I", UNIPHIER_PIN_IECTRL_NONE, 641 UNIPHIER_PINCTRL_PIN(206, "CLK54I", UNIPHIER_PIN_IECTRL_NONE,
644 192, UNIPHIER_PIN_DRV_NONE, 642 -1, UNIPHIER_PIN_DRV_NONE,
645 192, UNIPHIER_PIN_PULL_DOWN), 643 192, UNIPHIER_PIN_PULL_DOWN),
646 UNIPHIER_PINCTRL_PIN(207, "YIN0", UNIPHIER_PIN_IECTRL_NONE, 644 UNIPHIER_PINCTRL_PIN(207, "YIN0", UNIPHIER_PIN_IECTRL_NONE,
647 193, UNIPHIER_PIN_DRV_4_8, 645 193, UNIPHIER_PIN_DRV_1BIT,
648 193, UNIPHIER_PIN_PULL_DOWN), 646 193, UNIPHIER_PIN_PULL_DOWN),
649 UNIPHIER_PINCTRL_PIN(208, "YIN1", UNIPHIER_PIN_IECTRL_NONE, 647 UNIPHIER_PINCTRL_PIN(208, "YIN1", UNIPHIER_PIN_IECTRL_NONE,
650 194, UNIPHIER_PIN_DRV_4_8, 648 194, UNIPHIER_PIN_DRV_1BIT,
651 194, UNIPHIER_PIN_PULL_DOWN), 649 194, UNIPHIER_PIN_PULL_DOWN),
652 UNIPHIER_PINCTRL_PIN(209, "YIN2", UNIPHIER_PIN_IECTRL_NONE, 650 UNIPHIER_PINCTRL_PIN(209, "YIN2", UNIPHIER_PIN_IECTRL_NONE,
653 195, UNIPHIER_PIN_DRV_4_8, 651 195, UNIPHIER_PIN_DRV_1BIT,
654 195, UNIPHIER_PIN_PULL_DOWN), 652 195, UNIPHIER_PIN_PULL_DOWN),
655 UNIPHIER_PINCTRL_PIN(210, "YIN3", UNIPHIER_PIN_IECTRL_NONE, 653 UNIPHIER_PINCTRL_PIN(210, "YIN3", UNIPHIER_PIN_IECTRL_NONE,
656 196, UNIPHIER_PIN_DRV_4_8, 654 196, UNIPHIER_PIN_DRV_1BIT,
657 196, UNIPHIER_PIN_PULL_DOWN), 655 196, UNIPHIER_PIN_PULL_DOWN),
658 UNIPHIER_PINCTRL_PIN(211, "YIN4", UNIPHIER_PIN_IECTRL_NONE, 656 UNIPHIER_PINCTRL_PIN(211, "YIN4", UNIPHIER_PIN_IECTRL_NONE,
659 197, UNIPHIER_PIN_DRV_4_8, 657 197, UNIPHIER_PIN_DRV_1BIT,
660 197, UNIPHIER_PIN_PULL_DOWN), 658 197, UNIPHIER_PIN_PULL_DOWN),
661 UNIPHIER_PINCTRL_PIN(212, "YIN5", UNIPHIER_PIN_IECTRL_NONE, 659 UNIPHIER_PINCTRL_PIN(212, "YIN5", UNIPHIER_PIN_IECTRL_NONE,
662 198, UNIPHIER_PIN_DRV_4_8, 660 198, UNIPHIER_PIN_DRV_1BIT,
663 198, UNIPHIER_PIN_PULL_DOWN), 661 198, UNIPHIER_PIN_PULL_DOWN),
664 UNIPHIER_PINCTRL_PIN(213, "CIN0", UNIPHIER_PIN_IECTRL_NONE, 662 UNIPHIER_PINCTRL_PIN(213, "CIN0", UNIPHIER_PIN_IECTRL_NONE,
665 199, UNIPHIER_PIN_DRV_4_8, 663 199, UNIPHIER_PIN_DRV_1BIT,
666 199, UNIPHIER_PIN_PULL_DOWN), 664 199, UNIPHIER_PIN_PULL_DOWN),
667 UNIPHIER_PINCTRL_PIN(214, "CIN1", UNIPHIER_PIN_IECTRL_NONE, 665 UNIPHIER_PINCTRL_PIN(214, "CIN1", UNIPHIER_PIN_IECTRL_NONE,
668 200, UNIPHIER_PIN_DRV_4_8, 666 200, UNIPHIER_PIN_DRV_1BIT,
669 200, UNIPHIER_PIN_PULL_DOWN), 667 200, UNIPHIER_PIN_PULL_DOWN),
670 UNIPHIER_PINCTRL_PIN(215, "CIN2", UNIPHIER_PIN_IECTRL_NONE, 668 UNIPHIER_PINCTRL_PIN(215, "CIN2", UNIPHIER_PIN_IECTRL_NONE,
671 201, UNIPHIER_PIN_DRV_4_8, 669 201, UNIPHIER_PIN_DRV_1BIT,
672 201, UNIPHIER_PIN_PULL_DOWN), 670 201, UNIPHIER_PIN_PULL_DOWN),
673 UNIPHIER_PINCTRL_PIN(216, "CIN3", UNIPHIER_PIN_IECTRL_NONE, 671 UNIPHIER_PINCTRL_PIN(216, "CIN3", UNIPHIER_PIN_IECTRL_NONE,
674 202, UNIPHIER_PIN_DRV_4_8, 672 202, UNIPHIER_PIN_DRV_1BIT,
675 202, UNIPHIER_PIN_PULL_DOWN), 673 202, UNIPHIER_PIN_PULL_DOWN),
676 UNIPHIER_PINCTRL_PIN(217, "CIN4", UNIPHIER_PIN_IECTRL_NONE, 674 UNIPHIER_PINCTRL_PIN(217, "CIN4", UNIPHIER_PIN_IECTRL_NONE,
677 203, UNIPHIER_PIN_DRV_4_8, 675 203, UNIPHIER_PIN_DRV_1BIT,
678 203, UNIPHIER_PIN_PULL_DOWN), 676 203, UNIPHIER_PIN_PULL_DOWN),
679 UNIPHIER_PINCTRL_PIN(218, "CIN5", UNIPHIER_PIN_IECTRL_NONE, 677 UNIPHIER_PINCTRL_PIN(218, "CIN5", UNIPHIER_PIN_IECTRL_NONE,
680 204, UNIPHIER_PIN_DRV_4_8, 678 204, UNIPHIER_PIN_DRV_1BIT,
681 204, UNIPHIER_PIN_PULL_DOWN), 679 204, UNIPHIER_PIN_PULL_DOWN),
682 UNIPHIER_PINCTRL_PIN(219, "GCP", UNIPHIER_PIN_IECTRL_NONE, 680 UNIPHIER_PINCTRL_PIN(219, "GCP", UNIPHIER_PIN_IECTRL_NONE,
683 205, UNIPHIER_PIN_DRV_4_8, 681 205, UNIPHIER_PIN_DRV_1BIT,
684 205, UNIPHIER_PIN_PULL_DOWN), 682 205, UNIPHIER_PIN_PULL_DOWN),
685 UNIPHIER_PINCTRL_PIN(220, "ADFLG", UNIPHIER_PIN_IECTRL_NONE, 683 UNIPHIER_PINCTRL_PIN(220, "ADFLG", UNIPHIER_PIN_IECTRL_NONE,
686 206, UNIPHIER_PIN_DRV_4_8, 684 206, UNIPHIER_PIN_DRV_1BIT,
687 206, UNIPHIER_PIN_PULL_DOWN), 685 206, UNIPHIER_PIN_PULL_DOWN),
688 UNIPHIER_PINCTRL_PIN(221, "CK27AIOF", UNIPHIER_PIN_IECTRL_NONE, 686 UNIPHIER_PINCTRL_PIN(221, "CK27AIOF", UNIPHIER_PIN_IECTRL_NONE,
689 207, UNIPHIER_PIN_DRV_4_8, 687 207, UNIPHIER_PIN_DRV_1BIT,
690 207, UNIPHIER_PIN_PULL_DOWN), 688 207, UNIPHIER_PIN_PULL_DOWN),
691 UNIPHIER_PINCTRL_PIN(222, "DACOUT", UNIPHIER_PIN_IECTRL_NONE, 689 UNIPHIER_PINCTRL_PIN(222, "DACOUT", UNIPHIER_PIN_IECTRL_NONE,
692 208, UNIPHIER_PIN_DRV_4_8, 690 208, UNIPHIER_PIN_DRV_1BIT,
693 208, UNIPHIER_PIN_PULL_DOWN), 691 208, UNIPHIER_PIN_PULL_DOWN),
694 UNIPHIER_PINCTRL_PIN(223, "DAFLG", UNIPHIER_PIN_IECTRL_NONE, 692 UNIPHIER_PINCTRL_PIN(223, "DAFLG", UNIPHIER_PIN_IECTRL_NONE,
695 209, UNIPHIER_PIN_DRV_4_8, 693 209, UNIPHIER_PIN_DRV_1BIT,
696 209, UNIPHIER_PIN_PULL_DOWN), 694 209, UNIPHIER_PIN_PULL_DOWN),
697 UNIPHIER_PINCTRL_PIN(224, "VBIH", UNIPHIER_PIN_IECTRL_NONE, 695 UNIPHIER_PINCTRL_PIN(224, "VBIH", UNIPHIER_PIN_IECTRL_NONE,
698 210, UNIPHIER_PIN_DRV_4_8, 696 210, UNIPHIER_PIN_DRV_1BIT,
699 210, UNIPHIER_PIN_PULL_DOWN), 697 210, UNIPHIER_PIN_PULL_DOWN),
700 UNIPHIER_PINCTRL_PIN(225, "VBIL", UNIPHIER_PIN_IECTRL_NONE, 698 UNIPHIER_PINCTRL_PIN(225, "VBIL", UNIPHIER_PIN_IECTRL_NONE,
701 211, UNIPHIER_PIN_DRV_4_8, 699 211, UNIPHIER_PIN_DRV_1BIT,
702 211, UNIPHIER_PIN_PULL_DOWN), 700 211, UNIPHIER_PIN_PULL_DOWN),
703 UNIPHIER_PINCTRL_PIN(226, "XSUB_RST", UNIPHIER_PIN_IECTRL_NONE, 701 UNIPHIER_PINCTRL_PIN(226, "XSUB_RST", UNIPHIER_PIN_IECTRL_NONE,
704 212, UNIPHIER_PIN_DRV_4_8, 702 212, UNIPHIER_PIN_DRV_1BIT,
705 212, UNIPHIER_PIN_PULL_DOWN), 703 212, UNIPHIER_PIN_PULL_DOWN),
706 UNIPHIER_PINCTRL_PIN(227, "XADC_PD", UNIPHIER_PIN_IECTRL_NONE, 704 UNIPHIER_PINCTRL_PIN(227, "XADC_PD", UNIPHIER_PIN_IECTRL_NONE,
707 213, UNIPHIER_PIN_DRV_4_8, 705 213, UNIPHIER_PIN_DRV_1BIT,
708 213, UNIPHIER_PIN_PULL_DOWN), 706 213, UNIPHIER_PIN_PULL_DOWN),
709 UNIPHIER_PINCTRL_PIN(228, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE, 707 UNIPHIER_PINCTRL_PIN(228, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE,
710 214, UNIPHIER_PIN_DRV_4_8, 708 214, UNIPHIER_PIN_DRV_1BIT,
711 214, UNIPHIER_PIN_PULL_DOWN), 709 214, UNIPHIER_PIN_PULL_DOWN),
712 UNIPHIER_PINCTRL_PIN(229, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE, 710 UNIPHIER_PINCTRL_PIN(229, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE,
713 215, UNIPHIER_PIN_DRV_4_8, 711 215, UNIPHIER_PIN_DRV_1BIT,
714 215, UNIPHIER_PIN_PULL_DOWN), 712 215, UNIPHIER_PIN_PULL_DOWN),
715 UNIPHIER_PINCTRL_PIN(230, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE, 713 UNIPHIER_PINCTRL_PIN(230, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE,
716 216, UNIPHIER_PIN_DRV_4_8, 714 216, UNIPHIER_PIN_DRV_1BIT,
717 216, UNIPHIER_PIN_PULL_DOWN), 715 216, UNIPHIER_PIN_PULL_DOWN),
718 UNIPHIER_PINCTRL_PIN(231, "AI1DMIX", UNIPHIER_PIN_IECTRL_NONE, 716 UNIPHIER_PINCTRL_PIN(231, "AI1DMIX", UNIPHIER_PIN_IECTRL_NONE,
719 217, UNIPHIER_PIN_DRV_4_8, 717 217, UNIPHIER_PIN_DRV_1BIT,
720 217, UNIPHIER_PIN_PULL_DOWN), 718 217, UNIPHIER_PIN_PULL_DOWN),
721 UNIPHIER_PINCTRL_PIN(232, "CK27HD", UNIPHIER_PIN_IECTRL_NONE, 719 UNIPHIER_PINCTRL_PIN(232, "CK27HD", UNIPHIER_PIN_IECTRL_NONE,
722 218, UNIPHIER_PIN_DRV_4_8, 720 218, UNIPHIER_PIN_DRV_1BIT,
723 218, UNIPHIER_PIN_PULL_DOWN), 721 218, UNIPHIER_PIN_PULL_DOWN),
724 UNIPHIER_PINCTRL_PIN(233, "XHD_RST", UNIPHIER_PIN_IECTRL_NONE, 722 UNIPHIER_PINCTRL_PIN(233, "XHD_RST", UNIPHIER_PIN_IECTRL_NONE,
725 219, UNIPHIER_PIN_DRV_4_8, 723 219, UNIPHIER_PIN_DRV_1BIT,
726 219, UNIPHIER_PIN_PULL_DOWN), 724 219, UNIPHIER_PIN_PULL_DOWN),
727 UNIPHIER_PINCTRL_PIN(234, "INTHD", UNIPHIER_PIN_IECTRL_NONE, 725 UNIPHIER_PINCTRL_PIN(234, "INTHD", UNIPHIER_PIN_IECTRL_NONE,
728 220, UNIPHIER_PIN_DRV_4_8, 726 220, UNIPHIER_PIN_DRV_1BIT,
729 220, UNIPHIER_PIN_PULL_UP), 727 220, UNIPHIER_PIN_PULL_UP),
730 UNIPHIER_PINCTRL_PIN(235, "VO1HDCK", UNIPHIER_PIN_IECTRL_NONE, 728 UNIPHIER_PINCTRL_PIN(235, "VO1HDCK", UNIPHIER_PIN_IECTRL_NONE,
731 221, UNIPHIER_PIN_DRV_4_8, 729 221, UNIPHIER_PIN_DRV_1BIT,
732 221, UNIPHIER_PIN_PULL_DOWN), 730 221, UNIPHIER_PIN_PULL_DOWN),
733 UNIPHIER_PINCTRL_PIN(236, "VO1HSYNC", UNIPHIER_PIN_IECTRL_NONE, 731 UNIPHIER_PINCTRL_PIN(236, "VO1HSYNC", UNIPHIER_PIN_IECTRL_NONE,
734 222, UNIPHIER_PIN_DRV_4_8, 732 222, UNIPHIER_PIN_DRV_1BIT,
735 222, UNIPHIER_PIN_PULL_DOWN), 733 222, UNIPHIER_PIN_PULL_DOWN),
736 UNIPHIER_PINCTRL_PIN(237, "VO1VSYNC", UNIPHIER_PIN_IECTRL_NONE, 734 UNIPHIER_PINCTRL_PIN(237, "VO1VSYNC", UNIPHIER_PIN_IECTRL_NONE,
737 223, UNIPHIER_PIN_DRV_4_8, 735 223, UNIPHIER_PIN_DRV_1BIT,
738 223, UNIPHIER_PIN_PULL_DOWN), 736 223, UNIPHIER_PIN_PULL_DOWN),
739 UNIPHIER_PINCTRL_PIN(238, "VO1DE", UNIPHIER_PIN_IECTRL_NONE, 737 UNIPHIER_PINCTRL_PIN(238, "VO1DE", UNIPHIER_PIN_IECTRL_NONE,
740 224, UNIPHIER_PIN_DRV_4_8, 738 224, UNIPHIER_PIN_DRV_1BIT,
741 224, UNIPHIER_PIN_PULL_DOWN), 739 224, UNIPHIER_PIN_PULL_DOWN),
742 UNIPHIER_PINCTRL_PIN(239, "VO1Y0", UNIPHIER_PIN_IECTRL_NONE, 740 UNIPHIER_PINCTRL_PIN(239, "VO1Y0", UNIPHIER_PIN_IECTRL_NONE,
743 225, UNIPHIER_PIN_DRV_4_8, 741 225, UNIPHIER_PIN_DRV_1BIT,
744 225, UNIPHIER_PIN_PULL_DOWN), 742 225, UNIPHIER_PIN_PULL_DOWN),
745 UNIPHIER_PINCTRL_PIN(240, "VO1Y1", UNIPHIER_PIN_IECTRL_NONE, 743 UNIPHIER_PINCTRL_PIN(240, "VO1Y1", UNIPHIER_PIN_IECTRL_NONE,
746 226, UNIPHIER_PIN_DRV_4_8, 744 226, UNIPHIER_PIN_DRV_1BIT,
747 226, UNIPHIER_PIN_PULL_DOWN), 745 226, UNIPHIER_PIN_PULL_DOWN),
748 UNIPHIER_PINCTRL_PIN(241, "VO1Y2", UNIPHIER_PIN_IECTRL_NONE, 746 UNIPHIER_PINCTRL_PIN(241, "VO1Y2", UNIPHIER_PIN_IECTRL_NONE,
749 227, UNIPHIER_PIN_DRV_4_8, 747 227, UNIPHIER_PIN_DRV_1BIT,
750 227, UNIPHIER_PIN_PULL_DOWN), 748 227, UNIPHIER_PIN_PULL_DOWN),
751 UNIPHIER_PINCTRL_PIN(242, "VO1Y3", UNIPHIER_PIN_IECTRL_NONE, 749 UNIPHIER_PINCTRL_PIN(242, "VO1Y3", UNIPHIER_PIN_IECTRL_NONE,
752 228, UNIPHIER_PIN_DRV_4_8, 750 228, UNIPHIER_PIN_DRV_1BIT,
753 228, UNIPHIER_PIN_PULL_DOWN), 751 228, UNIPHIER_PIN_PULL_DOWN),
754 UNIPHIER_PINCTRL_PIN(243, "VO1Y4", UNIPHIER_PIN_IECTRL_NONE, 752 UNIPHIER_PINCTRL_PIN(243, "VO1Y4", UNIPHIER_PIN_IECTRL_NONE,
755 229, UNIPHIER_PIN_DRV_4_8, 753 229, UNIPHIER_PIN_DRV_1BIT,
756 229, UNIPHIER_PIN_PULL_DOWN), 754 229, UNIPHIER_PIN_PULL_DOWN),
757 UNIPHIER_PINCTRL_PIN(244, "VO1Y5", UNIPHIER_PIN_IECTRL_NONE, 755 UNIPHIER_PINCTRL_PIN(244, "VO1Y5", UNIPHIER_PIN_IECTRL_NONE,
758 230, UNIPHIER_PIN_DRV_4_8, 756 230, UNIPHIER_PIN_DRV_1BIT,
759 230, UNIPHIER_PIN_PULL_DOWN), 757 230, UNIPHIER_PIN_PULL_DOWN),
760 UNIPHIER_PINCTRL_PIN(245, "VO1Y6", UNIPHIER_PIN_IECTRL_NONE, 758 UNIPHIER_PINCTRL_PIN(245, "VO1Y6", UNIPHIER_PIN_IECTRL_NONE,
761 231, UNIPHIER_PIN_DRV_4_8, 759 231, UNIPHIER_PIN_DRV_1BIT,
762 231, UNIPHIER_PIN_PULL_DOWN), 760 231, UNIPHIER_PIN_PULL_DOWN),
763 UNIPHIER_PINCTRL_PIN(246, "VO1Y7", UNIPHIER_PIN_IECTRL_NONE, 761 UNIPHIER_PINCTRL_PIN(246, "VO1Y7", UNIPHIER_PIN_IECTRL_NONE,
764 232, UNIPHIER_PIN_DRV_4_8, 762 232, UNIPHIER_PIN_DRV_1BIT,
765 232, UNIPHIER_PIN_PULL_DOWN), 763 232, UNIPHIER_PIN_PULL_DOWN),
766 UNIPHIER_PINCTRL_PIN(247, "VO1Y8", UNIPHIER_PIN_IECTRL_NONE, 764 UNIPHIER_PINCTRL_PIN(247, "VO1Y8", UNIPHIER_PIN_IECTRL_NONE,
767 233, UNIPHIER_PIN_DRV_4_8, 765 233, UNIPHIER_PIN_DRV_1BIT,
768 233, UNIPHIER_PIN_PULL_DOWN), 766 233, UNIPHIER_PIN_PULL_DOWN),
769 UNIPHIER_PINCTRL_PIN(248, "VO1Y9", UNIPHIER_PIN_IECTRL_NONE, 767 UNIPHIER_PINCTRL_PIN(248, "VO1Y9", UNIPHIER_PIN_IECTRL_NONE,
770 234, UNIPHIER_PIN_DRV_4_8, 768 234, UNIPHIER_PIN_DRV_1BIT,
771 234, UNIPHIER_PIN_PULL_DOWN), 769 234, UNIPHIER_PIN_PULL_DOWN),
772 UNIPHIER_PINCTRL_PIN(249, "VO1Y10", UNIPHIER_PIN_IECTRL_NONE, 770 UNIPHIER_PINCTRL_PIN(249, "VO1Y10", UNIPHIER_PIN_IECTRL_NONE,
773 235, UNIPHIER_PIN_DRV_4_8, 771 235, UNIPHIER_PIN_DRV_1BIT,
774 235, UNIPHIER_PIN_PULL_DOWN), 772 235, UNIPHIER_PIN_PULL_DOWN),
775 UNIPHIER_PINCTRL_PIN(250, "VO1Y11", UNIPHIER_PIN_IECTRL_NONE, 773 UNIPHIER_PINCTRL_PIN(250, "VO1Y11", UNIPHIER_PIN_IECTRL_NONE,
776 236, UNIPHIER_PIN_DRV_4_8, 774 236, UNIPHIER_PIN_DRV_1BIT,
777 236, UNIPHIER_PIN_PULL_DOWN), 775 236, UNIPHIER_PIN_PULL_DOWN),
778 UNIPHIER_PINCTRL_PIN(251, "VO1CB0", UNIPHIER_PIN_IECTRL_NONE, 776 UNIPHIER_PINCTRL_PIN(251, "VO1CB0", UNIPHIER_PIN_IECTRL_NONE,
779 237, UNIPHIER_PIN_DRV_4_8, 777 237, UNIPHIER_PIN_DRV_1BIT,
780 237, UNIPHIER_PIN_PULL_DOWN), 778 237, UNIPHIER_PIN_PULL_DOWN),
781 UNIPHIER_PINCTRL_PIN(252, "VO1CB1", UNIPHIER_PIN_IECTRL_NONE, 779 UNIPHIER_PINCTRL_PIN(252, "VO1CB1", UNIPHIER_PIN_IECTRL_NONE,
782 238, UNIPHIER_PIN_DRV_4_8, 780 238, UNIPHIER_PIN_DRV_1BIT,
783 238, UNIPHIER_PIN_PULL_DOWN), 781 238, UNIPHIER_PIN_PULL_DOWN),
784 UNIPHIER_PINCTRL_PIN(253, "VO1CB2", UNIPHIER_PIN_IECTRL_NONE, 782 UNIPHIER_PINCTRL_PIN(253, "VO1CB2", UNIPHIER_PIN_IECTRL_NONE,
785 239, UNIPHIER_PIN_DRV_4_8, 783 239, UNIPHIER_PIN_DRV_1BIT,
786 239, UNIPHIER_PIN_PULL_DOWN), 784 239, UNIPHIER_PIN_PULL_DOWN),
787 UNIPHIER_PINCTRL_PIN(254, "VO1CB3", UNIPHIER_PIN_IECTRL_NONE, 785 UNIPHIER_PINCTRL_PIN(254, "VO1CB3", UNIPHIER_PIN_IECTRL_NONE,
788 240, UNIPHIER_PIN_DRV_4_8, 786 240, UNIPHIER_PIN_DRV_1BIT,
789 240, UNIPHIER_PIN_PULL_DOWN), 787 240, UNIPHIER_PIN_PULL_DOWN),
790 UNIPHIER_PINCTRL_PIN(255, "VO1CB4", UNIPHIER_PIN_IECTRL_NONE, 788 UNIPHIER_PINCTRL_PIN(255, "VO1CB4", UNIPHIER_PIN_IECTRL_NONE,
791 241, UNIPHIER_PIN_DRV_4_8, 789 241, UNIPHIER_PIN_DRV_1BIT,
792 241, UNIPHIER_PIN_PULL_DOWN), 790 241, UNIPHIER_PIN_PULL_DOWN),
793 UNIPHIER_PINCTRL_PIN(256, "VO1CB5", UNIPHIER_PIN_IECTRL_NONE, 791 UNIPHIER_PINCTRL_PIN(256, "VO1CB5", UNIPHIER_PIN_IECTRL_NONE,
794 242, UNIPHIER_PIN_DRV_4_8, 792 242, UNIPHIER_PIN_DRV_1BIT,
795 242, UNIPHIER_PIN_PULL_DOWN), 793 242, UNIPHIER_PIN_PULL_DOWN),
796 UNIPHIER_PINCTRL_PIN(257, "VO1CB6", UNIPHIER_PIN_IECTRL_NONE, 794 UNIPHIER_PINCTRL_PIN(257, "VO1CB6", UNIPHIER_PIN_IECTRL_NONE,
797 243, UNIPHIER_PIN_DRV_4_8, 795 243, UNIPHIER_PIN_DRV_1BIT,
798 243, UNIPHIER_PIN_PULL_DOWN), 796 243, UNIPHIER_PIN_PULL_DOWN),
799 UNIPHIER_PINCTRL_PIN(258, "VO1CB7", UNIPHIER_PIN_IECTRL_NONE, 797 UNIPHIER_PINCTRL_PIN(258, "VO1CB7", UNIPHIER_PIN_IECTRL_NONE,
800 244, UNIPHIER_PIN_DRV_4_8, 798 244, UNIPHIER_PIN_DRV_1BIT,
801 244, UNIPHIER_PIN_PULL_DOWN), 799 244, UNIPHIER_PIN_PULL_DOWN),
802 UNIPHIER_PINCTRL_PIN(259, "VO1CB8", UNIPHIER_PIN_IECTRL_NONE, 800 UNIPHIER_PINCTRL_PIN(259, "VO1CB8", UNIPHIER_PIN_IECTRL_NONE,
803 245, UNIPHIER_PIN_DRV_4_8, 801 245, UNIPHIER_PIN_DRV_1BIT,
804 245, UNIPHIER_PIN_PULL_DOWN), 802 245, UNIPHIER_PIN_PULL_DOWN),
805 UNIPHIER_PINCTRL_PIN(260, "VO1CB9", UNIPHIER_PIN_IECTRL_NONE, 803 UNIPHIER_PINCTRL_PIN(260, "VO1CB9", UNIPHIER_PIN_IECTRL_NONE,
806 246, UNIPHIER_PIN_DRV_4_8, 804 246, UNIPHIER_PIN_DRV_1BIT,
807 246, UNIPHIER_PIN_PULL_DOWN), 805 246, UNIPHIER_PIN_PULL_DOWN),
808 UNIPHIER_PINCTRL_PIN(261, "VO1CB10", UNIPHIER_PIN_IECTRL_NONE, 806 UNIPHIER_PINCTRL_PIN(261, "VO1CB10", UNIPHIER_PIN_IECTRL_NONE,
809 247, UNIPHIER_PIN_DRV_4_8, 807 247, UNIPHIER_PIN_DRV_1BIT,
810 247, UNIPHIER_PIN_PULL_DOWN), 808 247, UNIPHIER_PIN_PULL_DOWN),
811 UNIPHIER_PINCTRL_PIN(262, "VO1CB11", UNIPHIER_PIN_IECTRL_NONE, 809 UNIPHIER_PINCTRL_PIN(262, "VO1CB11", UNIPHIER_PIN_IECTRL_NONE,
812 248, UNIPHIER_PIN_DRV_4_8, 810 248, UNIPHIER_PIN_DRV_1BIT,
813 248, UNIPHIER_PIN_PULL_DOWN), 811 248, UNIPHIER_PIN_PULL_DOWN),
814 UNIPHIER_PINCTRL_PIN(263, "VO1CR0", UNIPHIER_PIN_IECTRL_NONE, 812 UNIPHIER_PINCTRL_PIN(263, "VO1CR0", UNIPHIER_PIN_IECTRL_NONE,
815 249, UNIPHIER_PIN_DRV_4_8, 813 249, UNIPHIER_PIN_DRV_1BIT,
816 249, UNIPHIER_PIN_PULL_DOWN), 814 249, UNIPHIER_PIN_PULL_DOWN),
817 UNIPHIER_PINCTRL_PIN(264, "VO1CR1", UNIPHIER_PIN_IECTRL_NONE, 815 UNIPHIER_PINCTRL_PIN(264, "VO1CR1", UNIPHIER_PIN_IECTRL_NONE,
818 250, UNIPHIER_PIN_DRV_4_8, 816 250, UNIPHIER_PIN_DRV_1BIT,
819 250, UNIPHIER_PIN_PULL_DOWN), 817 250, UNIPHIER_PIN_PULL_DOWN),
820 UNIPHIER_PINCTRL_PIN(265, "VO1CR2", UNIPHIER_PIN_IECTRL_NONE, 818 UNIPHIER_PINCTRL_PIN(265, "VO1CR2", UNIPHIER_PIN_IECTRL_NONE,
821 251, UNIPHIER_PIN_DRV_4_8, 819 251, UNIPHIER_PIN_DRV_1BIT,
822 251, UNIPHIER_PIN_PULL_DOWN), 820 251, UNIPHIER_PIN_PULL_DOWN),
823 UNIPHIER_PINCTRL_PIN(266, "VO1CR3", UNIPHIER_PIN_IECTRL_NONE, 821 UNIPHIER_PINCTRL_PIN(266, "VO1CR3", UNIPHIER_PIN_IECTRL_NONE,
824 252, UNIPHIER_PIN_DRV_4_8, 822 252, UNIPHIER_PIN_DRV_1BIT,
825 252, UNIPHIER_PIN_PULL_DOWN), 823 252, UNIPHIER_PIN_PULL_DOWN),
826 UNIPHIER_PINCTRL_PIN(267, "VO1CR4", UNIPHIER_PIN_IECTRL_NONE, 824 UNIPHIER_PINCTRL_PIN(267, "VO1CR4", UNIPHIER_PIN_IECTRL_NONE,
827 253, UNIPHIER_PIN_DRV_4_8, 825 253, UNIPHIER_PIN_DRV_1BIT,
828 253, UNIPHIER_PIN_PULL_DOWN), 826 253, UNIPHIER_PIN_PULL_DOWN),
829 UNIPHIER_PINCTRL_PIN(268, "VO1CR5", UNIPHIER_PIN_IECTRL_NONE, 827 UNIPHIER_PINCTRL_PIN(268, "VO1CR5", UNIPHIER_PIN_IECTRL_NONE,
830 254, UNIPHIER_PIN_DRV_4_8, 828 254, UNIPHIER_PIN_DRV_1BIT,
831 254, UNIPHIER_PIN_PULL_DOWN), 829 254, UNIPHIER_PIN_PULL_DOWN),
832 UNIPHIER_PINCTRL_PIN(269, "VO1CR6", UNIPHIER_PIN_IECTRL_NONE, 830 UNIPHIER_PINCTRL_PIN(269, "VO1CR6", UNIPHIER_PIN_IECTRL_NONE,
833 255, UNIPHIER_PIN_DRV_4_8, 831 255, UNIPHIER_PIN_DRV_1BIT,
834 255, UNIPHIER_PIN_PULL_DOWN), 832 255, UNIPHIER_PIN_PULL_DOWN),
835 UNIPHIER_PINCTRL_PIN(270, "VO1CR7", UNIPHIER_PIN_IECTRL_NONE, 833 UNIPHIER_PINCTRL_PIN(270, "VO1CR7", UNIPHIER_PIN_IECTRL_NONE,
836 256, UNIPHIER_PIN_DRV_4_8, 834 256, UNIPHIER_PIN_DRV_1BIT,
837 256, UNIPHIER_PIN_PULL_DOWN), 835 256, UNIPHIER_PIN_PULL_DOWN),
838 UNIPHIER_PINCTRL_PIN(271, "VO1CR8", UNIPHIER_PIN_IECTRL_NONE, 836 UNIPHIER_PINCTRL_PIN(271, "VO1CR8", UNIPHIER_PIN_IECTRL_NONE,
839 257, UNIPHIER_PIN_DRV_4_8, 837 257, UNIPHIER_PIN_DRV_1BIT,
840 257, UNIPHIER_PIN_PULL_DOWN), 838 257, UNIPHIER_PIN_PULL_DOWN),
841 UNIPHIER_PINCTRL_PIN(272, "VO1CR9", UNIPHIER_PIN_IECTRL_NONE, 839 UNIPHIER_PINCTRL_PIN(272, "VO1CR9", UNIPHIER_PIN_IECTRL_NONE,
842 258, UNIPHIER_PIN_DRV_4_8, 840 258, UNIPHIER_PIN_DRV_1BIT,
843 258, UNIPHIER_PIN_PULL_DOWN), 841 258, UNIPHIER_PIN_PULL_DOWN),
844 UNIPHIER_PINCTRL_PIN(273, "VO1CR10", UNIPHIER_PIN_IECTRL_NONE, 842 UNIPHIER_PINCTRL_PIN(273, "VO1CR10", UNIPHIER_PIN_IECTRL_NONE,
845 259, UNIPHIER_PIN_DRV_4_8, 843 259, UNIPHIER_PIN_DRV_1BIT,
846 259, UNIPHIER_PIN_PULL_DOWN), 844 259, UNIPHIER_PIN_PULL_DOWN),
847 UNIPHIER_PINCTRL_PIN(274, "VO1CR11", UNIPHIER_PIN_IECTRL_NONE, 845 UNIPHIER_PINCTRL_PIN(274, "VO1CR11", UNIPHIER_PIN_IECTRL_NONE,
848 260, UNIPHIER_PIN_DRV_4_8, 846 260, UNIPHIER_PIN_DRV_1BIT,
849 260, UNIPHIER_PIN_PULL_DOWN), 847 260, UNIPHIER_PIN_PULL_DOWN),
850 UNIPHIER_PINCTRL_PIN(275, "VO1EX0", UNIPHIER_PIN_IECTRL_NONE, 848 UNIPHIER_PINCTRL_PIN(275, "VO1EX0", UNIPHIER_PIN_IECTRL_NONE,
851 261, UNIPHIER_PIN_DRV_4_8, 849 261, UNIPHIER_PIN_DRV_1BIT,
852 261, UNIPHIER_PIN_PULL_DOWN), 850 261, UNIPHIER_PIN_PULL_DOWN),
853 UNIPHIER_PINCTRL_PIN(276, "VO1EX1", UNIPHIER_PIN_IECTRL_NONE, 851 UNIPHIER_PINCTRL_PIN(276, "VO1EX1", UNIPHIER_PIN_IECTRL_NONE,
854 262, UNIPHIER_PIN_DRV_4_8, 852 262, UNIPHIER_PIN_DRV_1BIT,
855 262, UNIPHIER_PIN_PULL_DOWN), 853 262, UNIPHIER_PIN_PULL_DOWN),
856 UNIPHIER_PINCTRL_PIN(277, "VO1EX2", UNIPHIER_PIN_IECTRL_NONE, 854 UNIPHIER_PINCTRL_PIN(277, "VO1EX2", UNIPHIER_PIN_IECTRL_NONE,
857 263, UNIPHIER_PIN_DRV_4_8, 855 263, UNIPHIER_PIN_DRV_1BIT,
858 263, UNIPHIER_PIN_PULL_DOWN), 856 263, UNIPHIER_PIN_PULL_DOWN),
859 UNIPHIER_PINCTRL_PIN(278, "VO1EX3", UNIPHIER_PIN_IECTRL_NONE, 857 UNIPHIER_PINCTRL_PIN(278, "VO1EX3", UNIPHIER_PIN_IECTRL_NONE,
860 264, UNIPHIER_PIN_DRV_4_8, 858 264, UNIPHIER_PIN_DRV_1BIT,
861 264, UNIPHIER_PIN_PULL_DOWN), 859 264, UNIPHIER_PIN_PULL_DOWN),
862 UNIPHIER_PINCTRL_PIN(279, "VEXCKA", UNIPHIER_PIN_IECTRL_NONE, 860 UNIPHIER_PINCTRL_PIN(279, "VEXCKA", UNIPHIER_PIN_IECTRL_NONE,
863 265, UNIPHIER_PIN_DRV_4_8, 861 265, UNIPHIER_PIN_DRV_1BIT,
864 265, UNIPHIER_PIN_PULL_DOWN), 862 265, UNIPHIER_PIN_PULL_DOWN),
865 UNIPHIER_PINCTRL_PIN(280, "VSEL0", UNIPHIER_PIN_IECTRL_NONE, 863 UNIPHIER_PINCTRL_PIN(280, "VSEL0", UNIPHIER_PIN_IECTRL_NONE,
866 266, UNIPHIER_PIN_DRV_4_8, 864 266, UNIPHIER_PIN_DRV_1BIT,
867 266, UNIPHIER_PIN_PULL_DOWN), 865 266, UNIPHIER_PIN_PULL_DOWN),
868 UNIPHIER_PINCTRL_PIN(281, "VSEL1", UNIPHIER_PIN_IECTRL_NONE, 866 UNIPHIER_PINCTRL_PIN(281, "VSEL1", UNIPHIER_PIN_IECTRL_NONE,
869 267, UNIPHIER_PIN_DRV_4_8, 867 267, UNIPHIER_PIN_DRV_1BIT,
870 267, UNIPHIER_PIN_PULL_DOWN), 868 267, UNIPHIER_PIN_PULL_DOWN),
871 UNIPHIER_PINCTRL_PIN(282, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE, 869 UNIPHIER_PINCTRL_PIN(282, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE,
872 268, UNIPHIER_PIN_DRV_4_8, 870 268, UNIPHIER_PIN_DRV_1BIT,
873 268, UNIPHIER_PIN_PULL_DOWN), 871 268, UNIPHIER_PIN_PULL_DOWN),
874 UNIPHIER_PINCTRL_PIN(283, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE, 872 UNIPHIER_PINCTRL_PIN(283, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE,
875 269, UNIPHIER_PIN_DRV_4_8, 873 269, UNIPHIER_PIN_DRV_1BIT,
876 269, UNIPHIER_PIN_PULL_DOWN), 874 269, UNIPHIER_PIN_PULL_DOWN),
877 UNIPHIER_PINCTRL_PIN(284, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE, 875 UNIPHIER_PINCTRL_PIN(284, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE,
878 270, UNIPHIER_PIN_DRV_4_8, 876 270, UNIPHIER_PIN_DRV_1BIT,
879 270, UNIPHIER_PIN_PULL_DOWN), 877 270, UNIPHIER_PIN_PULL_DOWN),
880 UNIPHIER_PINCTRL_PIN(285, "AO1D0", UNIPHIER_PIN_IECTRL_NONE, 878 UNIPHIER_PINCTRL_PIN(285, "AO1D0", UNIPHIER_PIN_IECTRL_NONE,
881 271, UNIPHIER_PIN_DRV_4_8, 879 271, UNIPHIER_PIN_DRV_1BIT,
882 271, UNIPHIER_PIN_PULL_DOWN), 880 271, UNIPHIER_PIN_PULL_DOWN),
883 UNIPHIER_PINCTRL_PIN(286, "AO1D1", UNIPHIER_PIN_IECTRL_NONE, 881 UNIPHIER_PINCTRL_PIN(286, "AO1D1", UNIPHIER_PIN_IECTRL_NONE,
884 272, UNIPHIER_PIN_DRV_4_8, 882 272, UNIPHIER_PIN_DRV_1BIT,
885 272, UNIPHIER_PIN_PULL_DOWN), 883 272, UNIPHIER_PIN_PULL_DOWN),
886 UNIPHIER_PINCTRL_PIN(287, "AO1D2", UNIPHIER_PIN_IECTRL_NONE, 884 UNIPHIER_PINCTRL_PIN(287, "AO1D2", UNIPHIER_PIN_IECTRL_NONE,
887 273, UNIPHIER_PIN_DRV_4_8, 885 273, UNIPHIER_PIN_DRV_1BIT,
888 273, UNIPHIER_PIN_PULL_DOWN), 886 273, UNIPHIER_PIN_PULL_DOWN),
889 UNIPHIER_PINCTRL_PIN(288, "AO1D3", UNIPHIER_PIN_IECTRL_NONE, 887 UNIPHIER_PINCTRL_PIN(288, "AO1D3", UNIPHIER_PIN_IECTRL_NONE,
890 274, UNIPHIER_PIN_DRV_4_8, 888 274, UNIPHIER_PIN_DRV_1BIT,
891 274, UNIPHIER_PIN_PULL_DOWN), 889 274, UNIPHIER_PIN_PULL_DOWN),
892 UNIPHIER_PINCTRL_PIN(289, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE, 890 UNIPHIER_PINCTRL_PIN(289, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE,
893 275, UNIPHIER_PIN_DRV_4_8, 891 275, UNIPHIER_PIN_DRV_1BIT,
894 275, UNIPHIER_PIN_PULL_DOWN), 892 275, UNIPHIER_PIN_PULL_DOWN),
895 UNIPHIER_PINCTRL_PIN(290, "XDAC_PD", UNIPHIER_PIN_IECTRL_NONE, 893 UNIPHIER_PINCTRL_PIN(290, "XDAC_PD", UNIPHIER_PIN_IECTRL_NONE,
896 276, UNIPHIER_PIN_DRV_4_8, 894 276, UNIPHIER_PIN_DRV_1BIT,
897 276, UNIPHIER_PIN_PULL_DOWN), 895 276, UNIPHIER_PIN_PULL_DOWN),
898 UNIPHIER_PINCTRL_PIN(291, "EX_A_MUTE", UNIPHIER_PIN_IECTRL_NONE, 896 UNIPHIER_PINCTRL_PIN(291, "EX_A_MUTE", UNIPHIER_PIN_IECTRL_NONE,
899 277, UNIPHIER_PIN_DRV_4_8, 897 277, UNIPHIER_PIN_DRV_1BIT,
900 277, UNIPHIER_PIN_PULL_UP), 898 277, UNIPHIER_PIN_PULL_UP),
901 UNIPHIER_PINCTRL_PIN(292, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 899 UNIPHIER_PINCTRL_PIN(292, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE,
902 278, UNIPHIER_PIN_DRV_4_8, 900 278, UNIPHIER_PIN_DRV_1BIT,
903 278, UNIPHIER_PIN_PULL_DOWN), 901 278, UNIPHIER_PIN_PULL_DOWN),
904 UNIPHIER_PINCTRL_PIN(293, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 902 UNIPHIER_PINCTRL_PIN(293, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE,
905 279, UNIPHIER_PIN_DRV_4_8, 903 279, UNIPHIER_PIN_DRV_1BIT,
906 279, UNIPHIER_PIN_PULL_DOWN), 904 279, UNIPHIER_PIN_PULL_DOWN),
907 UNIPHIER_PINCTRL_PIN(294, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 905 UNIPHIER_PINCTRL_PIN(294, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE,
908 280, UNIPHIER_PIN_DRV_4_8, 906 280, UNIPHIER_PIN_DRV_1BIT,
909 280, UNIPHIER_PIN_PULL_DOWN), 907 280, UNIPHIER_PIN_PULL_DOWN),
910 UNIPHIER_PINCTRL_PIN(295, "AO2DMIX", UNIPHIER_PIN_IECTRL_NONE, 908 UNIPHIER_PINCTRL_PIN(295, "AO2DMIX", UNIPHIER_PIN_IECTRL_NONE,
911 281, UNIPHIER_PIN_DRV_4_8, 909 281, UNIPHIER_PIN_DRV_1BIT,
912 281, UNIPHIER_PIN_PULL_DOWN), 910 281, UNIPHIER_PIN_PULL_DOWN),
913 UNIPHIER_PINCTRL_PIN(296, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE, 911 UNIPHIER_PINCTRL_PIN(296, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE,
914 282, UNIPHIER_PIN_DRV_4_8, 912 282, UNIPHIER_PIN_DRV_1BIT,
915 282, UNIPHIER_PIN_PULL_DOWN), 913 282, UNIPHIER_PIN_PULL_DOWN),
916 UNIPHIER_PINCTRL_PIN(297, "HTHPD", UNIPHIER_PIN_IECTRL_NONE, 914 UNIPHIER_PINCTRL_PIN(297, "HTHPD", UNIPHIER_PIN_IECTRL_NONE,
917 -1, UNIPHIER_PIN_DRV_FIXED_5, 915 -1, UNIPHIER_PIN_DRV_FIXED5,
918 -1, UNIPHIER_PIN_PULL_NONE), 916 -1, UNIPHIER_PIN_PULL_NONE),
919 UNIPHIER_PINCTRL_PIN(298, "HTSCL", UNIPHIER_PIN_IECTRL_NONE, 917 UNIPHIER_PINCTRL_PIN(298, "HTSCL", UNIPHIER_PIN_IECTRL_NONE,
920 -1, UNIPHIER_PIN_DRV_FIXED_5, 918 -1, UNIPHIER_PIN_DRV_FIXED5,
921 -1, UNIPHIER_PIN_PULL_NONE), 919 -1, UNIPHIER_PIN_PULL_NONE),
922 UNIPHIER_PINCTRL_PIN(299, "HTSDA", UNIPHIER_PIN_IECTRL_NONE, 920 UNIPHIER_PINCTRL_PIN(299, "HTSDA", UNIPHIER_PIN_IECTRL_NONE,
923 -1, UNIPHIER_PIN_DRV_FIXED_5, 921 -1, UNIPHIER_PIN_DRV_FIXED5,
924 -1, UNIPHIER_PIN_PULL_NONE), 922 -1, UNIPHIER_PIN_PULL_NONE),
925 UNIPHIER_PINCTRL_PIN(300, "PORT00", UNIPHIER_PIN_IECTRL_NONE, 923 UNIPHIER_PINCTRL_PIN(300, "PORT00", UNIPHIER_PIN_IECTRL_NONE,
926 284, UNIPHIER_PIN_DRV_4_8, 924 284, UNIPHIER_PIN_DRV_1BIT,
927 284, UNIPHIER_PIN_PULL_DOWN), 925 284, UNIPHIER_PIN_PULL_DOWN),
928 UNIPHIER_PINCTRL_PIN(301, "PORT01", UNIPHIER_PIN_IECTRL_NONE, 926 UNIPHIER_PINCTRL_PIN(301, "PORT01", UNIPHIER_PIN_IECTRL_NONE,
929 285, UNIPHIER_PIN_DRV_4_8, 927 285, UNIPHIER_PIN_DRV_1BIT,
930 285, UNIPHIER_PIN_PULL_DOWN), 928 285, UNIPHIER_PIN_PULL_DOWN),
931 UNIPHIER_PINCTRL_PIN(302, "PORT02", UNIPHIER_PIN_IECTRL_NONE, 929 UNIPHIER_PINCTRL_PIN(302, "PORT02", UNIPHIER_PIN_IECTRL_NONE,
932 286, UNIPHIER_PIN_DRV_4_8, 930 286, UNIPHIER_PIN_DRV_1BIT,
933 286, UNIPHIER_PIN_PULL_DOWN), 931 286, UNIPHIER_PIN_PULL_DOWN),
934 UNIPHIER_PINCTRL_PIN(303, "PORT03", UNIPHIER_PIN_IECTRL_NONE, 932 UNIPHIER_PINCTRL_PIN(303, "PORT03", UNIPHIER_PIN_IECTRL_NONE,
935 287, UNIPHIER_PIN_DRV_4_8, 933 287, UNIPHIER_PIN_DRV_1BIT,
936 287, UNIPHIER_PIN_PULL_DOWN), 934 287, UNIPHIER_PIN_PULL_DOWN),
937 UNIPHIER_PINCTRL_PIN(304, "PORT04", UNIPHIER_PIN_IECTRL_NONE, 935 UNIPHIER_PINCTRL_PIN(304, "PORT04", UNIPHIER_PIN_IECTRL_NONE,
938 288, UNIPHIER_PIN_DRV_4_8, 936 288, UNIPHIER_PIN_DRV_1BIT,
939 288, UNIPHIER_PIN_PULL_DOWN), 937 288, UNIPHIER_PIN_PULL_DOWN),
940 UNIPHIER_PINCTRL_PIN(305, "PORT05", UNIPHIER_PIN_IECTRL_NONE, 938 UNIPHIER_PINCTRL_PIN(305, "PORT05", UNIPHIER_PIN_IECTRL_NONE,
941 289, UNIPHIER_PIN_DRV_4_8, 939 289, UNIPHIER_PIN_DRV_1BIT,
942 289, UNIPHIER_PIN_PULL_DOWN), 940 289, UNIPHIER_PIN_PULL_DOWN),
943 UNIPHIER_PINCTRL_PIN(306, "PORT06", UNIPHIER_PIN_IECTRL_NONE, 941 UNIPHIER_PINCTRL_PIN(306, "PORT06", UNIPHIER_PIN_IECTRL_NONE,
944 290, UNIPHIER_PIN_DRV_4_8, 942 290, UNIPHIER_PIN_DRV_1BIT,
945 290, UNIPHIER_PIN_PULL_DOWN), 943 290, UNIPHIER_PIN_PULL_DOWN),
946 UNIPHIER_PINCTRL_PIN(307, "PORT07", UNIPHIER_PIN_IECTRL_NONE, 944 UNIPHIER_PINCTRL_PIN(307, "PORT07", UNIPHIER_PIN_IECTRL_NONE,
947 291, UNIPHIER_PIN_DRV_4_8, 945 291, UNIPHIER_PIN_DRV_1BIT,
948 291, UNIPHIER_PIN_PULL_DOWN), 946 291, UNIPHIER_PIN_PULL_DOWN),
949 UNIPHIER_PINCTRL_PIN(308, "PORT10", UNIPHIER_PIN_IECTRL_NONE, 947 UNIPHIER_PINCTRL_PIN(308, "PORT10", UNIPHIER_PIN_IECTRL_NONE,
950 292, UNIPHIER_PIN_DRV_4_8, 948 292, UNIPHIER_PIN_DRV_1BIT,
951 292, UNIPHIER_PIN_PULL_DOWN), 949 292, UNIPHIER_PIN_PULL_DOWN),
952 UNIPHIER_PINCTRL_PIN(309, "PORT11", UNIPHIER_PIN_IECTRL_NONE, 950 UNIPHIER_PINCTRL_PIN(309, "PORT11", UNIPHIER_PIN_IECTRL_NONE,
953 293, UNIPHIER_PIN_DRV_4_8, 951 293, UNIPHIER_PIN_DRV_1BIT,
954 293, UNIPHIER_PIN_PULL_DOWN), 952 293, UNIPHIER_PIN_PULL_DOWN),
955 UNIPHIER_PINCTRL_PIN(310, "PORT12", UNIPHIER_PIN_IECTRL_NONE, 953 UNIPHIER_PINCTRL_PIN(310, "PORT12", UNIPHIER_PIN_IECTRL_NONE,
956 294, UNIPHIER_PIN_DRV_4_8, 954 294, UNIPHIER_PIN_DRV_1BIT,
957 294, UNIPHIER_PIN_PULL_DOWN), 955 294, UNIPHIER_PIN_PULL_DOWN),
958 UNIPHIER_PINCTRL_PIN(311, "PORT13", UNIPHIER_PIN_IECTRL_NONE, 956 UNIPHIER_PINCTRL_PIN(311, "PORT13", UNIPHIER_PIN_IECTRL_NONE,
959 295, UNIPHIER_PIN_DRV_4_8, 957 295, UNIPHIER_PIN_DRV_1BIT,
960 295, UNIPHIER_PIN_PULL_DOWN), 958 295, UNIPHIER_PIN_PULL_DOWN),
961 UNIPHIER_PINCTRL_PIN(312, "PORT14", UNIPHIER_PIN_IECTRL_NONE, 959 UNIPHIER_PINCTRL_PIN(312, "PORT14", UNIPHIER_PIN_IECTRL_NONE,
962 296, UNIPHIER_PIN_DRV_4_8, 960 296, UNIPHIER_PIN_DRV_1BIT,
963 296, UNIPHIER_PIN_PULL_DOWN), 961 296, UNIPHIER_PIN_PULL_DOWN),
964 UNIPHIER_PINCTRL_PIN(313, "PORT15", UNIPHIER_PIN_IECTRL_NONE, 962 UNIPHIER_PINCTRL_PIN(313, "PORT15", UNIPHIER_PIN_IECTRL_NONE,
965 297, UNIPHIER_PIN_DRV_4_8, 963 297, UNIPHIER_PIN_DRV_1BIT,
966 297, UNIPHIER_PIN_PULL_DOWN), 964 297, UNIPHIER_PIN_PULL_DOWN),
967 UNIPHIER_PINCTRL_PIN(314, "PORT16", UNIPHIER_PIN_IECTRL_NONE, 965 UNIPHIER_PINCTRL_PIN(314, "PORT16", UNIPHIER_PIN_IECTRL_NONE,
968 298, UNIPHIER_PIN_DRV_4_8, 966 298, UNIPHIER_PIN_DRV_1BIT,
969 298, UNIPHIER_PIN_PULL_DOWN), 967 298, UNIPHIER_PIN_PULL_DOWN),
970 UNIPHIER_PINCTRL_PIN(315, "PORT17", UNIPHIER_PIN_IECTRL_NONE, 968 UNIPHIER_PINCTRL_PIN(315, "PORT17", UNIPHIER_PIN_IECTRL_NONE,
971 299, UNIPHIER_PIN_DRV_4_8, 969 299, UNIPHIER_PIN_DRV_1BIT,
972 299, UNIPHIER_PIN_PULL_DOWN), 970 299, UNIPHIER_PIN_PULL_DOWN),
973 UNIPHIER_PINCTRL_PIN(316, "PORT20", UNIPHIER_PIN_IECTRL_NONE, 971 UNIPHIER_PINCTRL_PIN(316, "PORT20", UNIPHIER_PIN_IECTRL_NONE,
974 300, UNIPHIER_PIN_DRV_4_8, 972 300, UNIPHIER_PIN_DRV_1BIT,
975 300, UNIPHIER_PIN_PULL_DOWN), 973 300, UNIPHIER_PIN_PULL_DOWN),
976 UNIPHIER_PINCTRL_PIN(317, "PORT21", UNIPHIER_PIN_IECTRL_NONE, 974 UNIPHIER_PINCTRL_PIN(317, "PORT21", UNIPHIER_PIN_IECTRL_NONE,
977 301, UNIPHIER_PIN_DRV_4_8, 975 301, UNIPHIER_PIN_DRV_1BIT,
978 301, UNIPHIER_PIN_PULL_DOWN), 976 301, UNIPHIER_PIN_PULL_DOWN),
979 UNIPHIER_PINCTRL_PIN(318, "PORT22", UNIPHIER_PIN_IECTRL_NONE, 977 UNIPHIER_PINCTRL_PIN(318, "PORT22", UNIPHIER_PIN_IECTRL_NONE,
980 302, UNIPHIER_PIN_DRV_4_8, 978 302, UNIPHIER_PIN_DRV_1BIT,
981 302, UNIPHIER_PIN_PULL_UP), 979 302, UNIPHIER_PIN_PULL_UP),
982 UNIPHIER_PINCTRL_PIN(319, "SD1DAT0", UNIPHIER_PIN_IECTRL_NONE, 980 UNIPHIER_PINCTRL_PIN(319, "SD1DAT0", UNIPHIER_PIN_IECTRL_NONE,
983 303, UNIPHIER_PIN_DRV_4_8, 981 303, UNIPHIER_PIN_DRV_1BIT,
984 303, UNIPHIER_PIN_PULL_UP), 982 303, UNIPHIER_PIN_PULL_UP),
985 UNIPHIER_PINCTRL_PIN(320, "SD1DAT1", UNIPHIER_PIN_IECTRL_NONE, 983 UNIPHIER_PINCTRL_PIN(320, "SD1DAT1", UNIPHIER_PIN_IECTRL_NONE,
986 304, UNIPHIER_PIN_DRV_4_8, 984 304, UNIPHIER_PIN_DRV_1BIT,
987 304, UNIPHIER_PIN_PULL_UP), 985 304, UNIPHIER_PIN_PULL_UP),
988 UNIPHIER_PINCTRL_PIN(321, "SD1DAT2", UNIPHIER_PIN_IECTRL_NONE, 986 UNIPHIER_PINCTRL_PIN(321, "SD1DAT2", UNIPHIER_PIN_IECTRL_NONE,
989 305, UNIPHIER_PIN_DRV_4_8, 987 305, UNIPHIER_PIN_DRV_1BIT,
990 305, UNIPHIER_PIN_PULL_UP), 988 305, UNIPHIER_PIN_PULL_UP),
991 UNIPHIER_PINCTRL_PIN(322, "SD1DAT3", UNIPHIER_PIN_IECTRL_NONE, 989 UNIPHIER_PINCTRL_PIN(322, "SD1DAT3", UNIPHIER_PIN_IECTRL_NONE,
992 306, UNIPHIER_PIN_DRV_4_8, 990 306, UNIPHIER_PIN_DRV_1BIT,
993 306, UNIPHIER_PIN_PULL_UP), 991 306, UNIPHIER_PIN_PULL_UP),
994 UNIPHIER_PINCTRL_PIN(323, "SD1CMD", UNIPHIER_PIN_IECTRL_NONE, 992 UNIPHIER_PINCTRL_PIN(323, "SD1CMD", UNIPHIER_PIN_IECTRL_NONE,
995 307, UNIPHIER_PIN_DRV_4_8, 993 307, UNIPHIER_PIN_DRV_1BIT,
996 307, UNIPHIER_PIN_PULL_UP), 994 307, UNIPHIER_PIN_PULL_UP),
997 UNIPHIER_PINCTRL_PIN(324, "SD1CLK", UNIPHIER_PIN_IECTRL_NONE, 995 UNIPHIER_PINCTRL_PIN(324, "SD1CLK", UNIPHIER_PIN_IECTRL_NONE,
998 308, UNIPHIER_PIN_DRV_4_8, 996 308, UNIPHIER_PIN_DRV_1BIT,
999 308, UNIPHIER_PIN_PULL_UP), 997 308, UNIPHIER_PIN_PULL_UP),
1000 UNIPHIER_PINCTRL_PIN(325, "SD1CD", UNIPHIER_PIN_IECTRL_NONE, 998 UNIPHIER_PINCTRL_PIN(325, "SD1CD", UNIPHIER_PIN_IECTRL_NONE,
1001 309, UNIPHIER_PIN_DRV_4_8, 999 309, UNIPHIER_PIN_DRV_1BIT,
1002 309, UNIPHIER_PIN_PULL_UP), 1000 309, UNIPHIER_PIN_PULL_UP),
1003 UNIPHIER_PINCTRL_PIN(326, "SD1WP", UNIPHIER_PIN_IECTRL_NONE, 1001 UNIPHIER_PINCTRL_PIN(326, "SD1WP", UNIPHIER_PIN_IECTRL_NONE,
1004 310, UNIPHIER_PIN_DRV_4_8, 1002 310, UNIPHIER_PIN_DRV_1BIT,
1005 310, UNIPHIER_PIN_PULL_UP), 1003 310, UNIPHIER_PIN_PULL_UP),
1006 UNIPHIER_PINCTRL_PIN(327, "SD1VTCG", UNIPHIER_PIN_IECTRL_NONE, 1004 UNIPHIER_PINCTRL_PIN(327, "SD1VTCG", UNIPHIER_PIN_IECTRL_NONE,
1007 311, UNIPHIER_PIN_DRV_4_8, 1005 311, UNIPHIER_PIN_DRV_1BIT,
1008 311, UNIPHIER_PIN_PULL_UP), 1006 311, UNIPHIER_PIN_PULL_UP),
1009 UNIPHIER_PINCTRL_PIN(328, "DMDISO", UNIPHIER_PIN_IECTRL_NONE, 1007 UNIPHIER_PINCTRL_PIN(328, "DMDISO", UNIPHIER_PIN_IECTRL_NONE,
1010 312, UNIPHIER_PIN_DRV_NONE, 1008 -1, UNIPHIER_PIN_DRV_NONE,
1011 312, UNIPHIER_PIN_PULL_DOWN), 1009 312, UNIPHIER_PIN_PULL_DOWN),
1012}; 1010};
1013 1011
1014static const unsigned emmc_pins[] = {40, 41, 42, 43, 51, 52, 53}; 1012static const unsigned emmc_pins[] = {40, 41, 42, 43, 51, 52, 53};
1015static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 1013static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
1016static const unsigned emmc_dat8_pins[] = {44, 45, 46, 47}; 1014static const unsigned emmc_dat8_pins[] = {44, 45, 46, 47};
1017static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 1015static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
1016static const unsigned ether_mii_pins[] = {160, 161, 162, 163, 164, 165, 166,
1017 167, 168, 169, 170, 171, 172, 173,
1018 174, 175, 176, 177, 178, 179};
1019static const int ether_mii_muxvals[] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 0, 0, 0, 0};
1021static const unsigned ether_rgmii_pins[] = {160, 161, 162, 163, 164, 165, 167,
1022 168, 169, 170, 171, 172, 176, 177,
1023 178, 179};
1024static const int ether_rgmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1025 0, 0, 0, 0};
1026static const unsigned ether_rmii_pins[] = {160, 161, 162, 165, 168, 169, 172,
1027 173, 176, 177, 178, 179};
1028static const int ether_rmii_muxvals[] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1029static const unsigned ether_rmiib_pins[] = {161, 162, 165, 167, 168, 169, 172,
1030 173, 176, 177, 178, 179};
1031static const int ether_rmiib_muxvals[] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0};
1018static const unsigned i2c0_pins[] = {142, 143}; 1032static const unsigned i2c0_pins[] = {142, 143};
1019static const unsigned i2c0_muxvals[] = {0, 0}; 1033static const int i2c0_muxvals[] = {0, 0};
1020static const unsigned i2c1_pins[] = {144, 145}; 1034static const unsigned i2c1_pins[] = {144, 145};
1021static const unsigned i2c1_muxvals[] = {0, 0}; 1035static const int i2c1_muxvals[] = {0, 0};
1022static const unsigned i2c2_pins[] = {146, 147}; 1036static const unsigned i2c2_pins[] = {146, 147};
1023static const unsigned i2c2_muxvals[] = {0, 0}; 1037static const int i2c2_muxvals[] = {0, 0};
1024static const unsigned i2c3_pins[] = {148, 149}; 1038static const unsigned i2c3_pins[] = {148, 149};
1025static const unsigned i2c3_muxvals[] = {0, 0}; 1039static const int i2c3_muxvals[] = {0, 0};
1026static const unsigned i2c6_pins[] = {308, 309}; 1040static const unsigned i2c6_pins[] = {308, 309};
1027static const unsigned i2c6_muxvals[] = {6, 6}; 1041static const int i2c6_muxvals[] = {6, 6};
1028static const unsigned nand_pins[] = {40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 1042static const unsigned nand_pins[] = {40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1029 50, 51, 52, 53, 54}; 1043 50, 51, 52, 53, 54};
1030static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1044static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1031 0, 0};
1032static const unsigned nand_cs1_pins[] = {131, 132}; 1045static const unsigned nand_cs1_pins[] = {131, 132};
1033static const unsigned nand_cs1_muxvals[] = {1, 1}; 1046static const int nand_cs1_muxvals[] = {1, 1};
1034static const unsigned sd_pins[] = {150, 151, 152, 153, 154, 155, 156, 157, 158}; 1047static const unsigned sd_pins[] = {150, 151, 152, 153, 154, 155, 156, 157, 158};
1035static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 1048static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
1036static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326, 1049static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326,
1037 327}; 1050 327};
1038static const unsigned sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 1051static const int sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
1052static const unsigned system_bus_pins[] = {25, 26, 27, 28, 29, 30, 31, 32, 33,
1053 34, 35, 36, 37, 38};
1054static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1055 0};
1056static const unsigned system_bus_cs0_pins[] = {318};
1057static const int system_bus_cs0_muxvals[] = {5};
1058static const unsigned system_bus_cs1_pins[] = {24};
1059static const int system_bus_cs1_muxvals[] = {0};
1060static const unsigned system_bus_cs2_pins[] = {315};
1061static const int system_bus_cs2_muxvals[] = {5};
1062static const unsigned system_bus_cs3_pins[] = {313};
1063static const int system_bus_cs3_muxvals[] = {5};
1064static const unsigned system_bus_cs4_pins[] = {305};
1065static const int system_bus_cs4_muxvals[] = {5};
1066static const unsigned system_bus_cs5_pins[] = {303};
1067static const int system_bus_cs5_muxvals[] = {6};
1068static const unsigned system_bus_cs6_pins[] = {307};
1069static const int system_bus_cs6_muxvals[] = {6};
1070static const unsigned system_bus_cs7_pins[] = {312};
1071static const int system_bus_cs7_muxvals[] = {6};
1039static const unsigned uart0_pins[] = {127, 128}; 1072static const unsigned uart0_pins[] = {127, 128};
1040static const unsigned uart0_muxvals[] = {0, 0}; 1073static const int uart0_muxvals[] = {0, 0};
1041static const unsigned uart1_pins[] = {129, 130}; 1074static const unsigned uart1_pins[] = {129, 130};
1042static const unsigned uart1_muxvals[] = {0, 0}; 1075static const int uart1_muxvals[] = {0, 0};
1043static const unsigned uart2_pins[] = {131, 132}; 1076static const unsigned uart2_pins[] = {131, 132};
1044static const unsigned uart2_muxvals[] = {0, 0}; 1077static const int uart2_muxvals[] = {0, 0};
1045static const unsigned uart3_pins[] = {88, 89}; 1078static const unsigned uart3_pins[] = {88, 89};
1046static const unsigned uart3_muxvals[] = {2, 2}; 1079static const int uart3_muxvals[] = {2, 2};
1047static const unsigned usb0_pins[] = {180, 181}; 1080static const unsigned usb0_pins[] = {180, 181};
1048static const unsigned usb0_muxvals[] = {0, 0}; 1081static const int usb0_muxvals[] = {0, 0};
1049static const unsigned usb1_pins[] = {182, 183}; 1082static const unsigned usb1_pins[] = {182, 183};
1050static const unsigned usb1_muxvals[] = {0, 0}; 1083static const int usb1_muxvals[] = {0, 0};
1051static const unsigned usb2_pins[] = {184, 185}; 1084static const unsigned usb2_pins[] = {184, 185};
1052static const unsigned usb2_muxvals[] = {0, 0}; 1085static const int usb2_muxvals[] = {0, 0};
1053static const unsigned usb3_pins[] = {186, 187}; 1086static const unsigned usb3_pins[] = {186, 187};
1054static const unsigned usb3_muxvals[] = {0, 0}; 1087static const int usb3_muxvals[] = {0, 0};
1055static const unsigned port_range0_pins[] = { 1088static const unsigned port_range0_pins[] = {
1056 300, 301, 302, 303, 304, 305, 306, 307, /* PORT0x */ 1089 300, 301, 302, 303, 304, 305, 306, 307, /* PORT0x */
1057 308, 309, 310, 311, 312, 313, 314, 315, /* PORT1x */ 1090 308, 309, 310, 311, 312, 313, 314, 315, /* PORT1x */
@@ -1069,7 +1102,7 @@ static const unsigned port_range0_pins[] = {
1069 76, 77, 78, 79, 80, 81, 82, 83, /* PORT13x */ 1102 76, 77, 78, 79, 80, 81, 82, 83, /* PORT13x */
1070 84, 85, 86, 87, 88, 89, 90, 91, /* PORT14x */ 1103 84, 85, 86, 87, 88, 89, 90, 91, /* PORT14x */
1071}; 1104};
1072static const unsigned port_range0_muxvals[] = { 1105static const int port_range0_muxvals[] = {
1073 7, 7, 7, 7, 7, 7, 7, 7, /* PORT0x */ 1106 7, 7, 7, 7, 7, 7, 7, 7, /* PORT0x */
1074 7, 7, 7, 7, 7, 7, 7, 7, /* PORT1x */ 1107 7, 7, 7, 7, 7, 7, 7, 7, /* PORT1x */
1075 7, 7, 7, 7, 7, 7, 7, 7, /* PORT2x */ 1108 7, 7, 7, 7, 7, 7, 7, 7, /* PORT2x */
@@ -1102,7 +1135,7 @@ static const unsigned port_range1_pins[] = {
1102 251, 252, 261, 262, 263, 264, 273, 274, /* PORT29x */ 1135 251, 252, 261, 262, 263, 264, 273, 274, /* PORT29x */
1103 31, 32, 33, 34, 35, 36, 37, 38, /* PORT30x */ 1136 31, 32, 33, 34, 35, 36, 37, 38, /* PORT30x */
1104}; 1137};
1105static const unsigned port_range1_muxvals[] = { 1138static const int port_range1_muxvals[] = {
1106 7, 7, 7, /* PORT175-177 */ 1139 7, 7, 7, /* PORT175-177 */
1107 7, 7, 7, 7, 7, 7, 7, 7, /* PORT18x */ 1140 7, 7, 7, 7, 7, 7, 7, 7, /* PORT18x */
1108 7, 7, 7, 7, 7, 7, 7, 7, /* PORT19x */ 1141 7, 7, 7, 7, 7, 7, 7, 7, /* PORT19x */
@@ -1123,7 +1156,7 @@ static const unsigned xirq_pins[] = {
1123 234, 186, 99, 100, 101, 102, 184, 301, /* XIRQ8-15 */ 1156 234, 186, 99, 100, 101, 102, 184, 301, /* XIRQ8-15 */
1124 302, 303, 304, 305, 306, /* XIRQ16-20 */ 1157 302, 303, 304, 305, 306, /* XIRQ16-20 */
1125}; 1158};
1126static const unsigned xirq_muxvals[] = { 1159static const int xirq_muxvals[] = {
1127 7, 7, 7, 7, 7, 7, 7, 7, /* XIRQ0-7 */ 1160 7, 7, 7, 7, 7, 7, 7, 7, /* XIRQ0-7 */
1128 7, 7, 7, 7, 7, 7, 2, 2, /* XIRQ8-15 */ 1161 7, 7, 7, 7, 7, 7, 2, 2, /* XIRQ8-15 */
1129 2, 2, 2, 2, 2, /* XIRQ16-20 */ 1162 2, 2, 2, 2, 2, /* XIRQ16-20 */
@@ -1131,13 +1164,17 @@ static const unsigned xirq_muxvals[] = {
1131static const unsigned xirq_alternatives_pins[] = { 1164static const unsigned xirq_alternatives_pins[] = {
1132 184, 310, 316, 1165 184, 310, 316,
1133}; 1166};
1134static const unsigned xirq_alternatives_muxvals[] = { 1167static const int xirq_alternatives_muxvals[] = {
1135 2, 2, 2, 1168 2, 2, 2,
1136}; 1169};
1137 1170
1138static const struct uniphier_pinctrl_group ph1_pro4_groups[] = { 1171static const struct uniphier_pinctrl_group uniphier_pro4_groups[] = {
1139 UNIPHIER_PINCTRL_GROUP(emmc), 1172 UNIPHIER_PINCTRL_GROUP(emmc),
1140 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 1173 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
1174 UNIPHIER_PINCTRL_GROUP(ether_mii),
1175 UNIPHIER_PINCTRL_GROUP(ether_rgmii),
1176 UNIPHIER_PINCTRL_GROUP(ether_rmii),
1177 UNIPHIER_PINCTRL_GROUP(ether_rmiib),
1141 UNIPHIER_PINCTRL_GROUP(i2c0), 1178 UNIPHIER_PINCTRL_GROUP(i2c0),
1142 UNIPHIER_PINCTRL_GROUP(i2c1), 1179 UNIPHIER_PINCTRL_GROUP(i2c1),
1143 UNIPHIER_PINCTRL_GROUP(i2c2), 1180 UNIPHIER_PINCTRL_GROUP(i2c2),
@@ -1147,6 +1184,15 @@ static const struct uniphier_pinctrl_group ph1_pro4_groups[] = {
1147 UNIPHIER_PINCTRL_GROUP(nand_cs1), 1184 UNIPHIER_PINCTRL_GROUP(nand_cs1),
1148 UNIPHIER_PINCTRL_GROUP(sd), 1185 UNIPHIER_PINCTRL_GROUP(sd),
1149 UNIPHIER_PINCTRL_GROUP(sd1), 1186 UNIPHIER_PINCTRL_GROUP(sd1),
1187 UNIPHIER_PINCTRL_GROUP(system_bus),
1188 UNIPHIER_PINCTRL_GROUP(system_bus_cs0),
1189 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
1190 UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
1191 UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
1192 UNIPHIER_PINCTRL_GROUP(system_bus_cs4),
1193 UNIPHIER_PINCTRL_GROUP(system_bus_cs5),
1194 UNIPHIER_PINCTRL_GROUP(system_bus_cs6),
1195 UNIPHIER_PINCTRL_GROUP(system_bus_cs7),
1150 UNIPHIER_PINCTRL_GROUP(uart0), 1196 UNIPHIER_PINCTRL_GROUP(uart0),
1151 UNIPHIER_PINCTRL_GROUP(uart1), 1197 UNIPHIER_PINCTRL_GROUP(uart1),
1152 UNIPHIER_PINCTRL_GROUP(uart2), 1198 UNIPHIER_PINCTRL_GROUP(uart2),
@@ -1413,6 +1459,9 @@ static const struct uniphier_pinctrl_group ph1_pro4_groups[] = {
1413}; 1459};
1414 1460
1415static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 1461static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
1462static const char * const ether_mii_groups[] = {"ether_mii"};
1463static const char * const ether_rgmii_groups[] = {"ether_rgmii"};
1464static const char * const ether_rmii_groups[] = {"ether_rgmii", "ether_rgmiib"};
1416static const char * const i2c0_groups[] = {"i2c0"}; 1465static const char * const i2c0_groups[] = {"i2c0"};
1417static const char * const i2c1_groups[] = {"i2c1"}; 1466static const char * const i2c1_groups[] = {"i2c1"};
1418static const char * const i2c2_groups[] = {"i2c2"}; 1467static const char * const i2c2_groups[] = {"i2c2"};
@@ -1421,6 +1470,15 @@ static const char * const i2c6_groups[] = {"i2c6"};
1421static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1470static const char * const nand_groups[] = {"nand", "nand_cs1"};
1422static const char * const sd_groups[] = {"sd"}; 1471static const char * const sd_groups[] = {"sd"};
1423static const char * const sd1_groups[] = {"sd1"}; 1472static const char * const sd1_groups[] = {"sd1"};
1473static const char * const system_bus_groups[] = {"system_bus",
1474 "system_bus_cs0",
1475 "system_bus_cs1",
1476 "system_bus_cs2",
1477 "system_bus_cs3",
1478 "system_bus_cs4",
1479 "system_bus_cs5",
1480 "system_bus_cs6",
1481 "system_bus_cs7"};
1424static const char * const uart0_groups[] = {"uart0"}; 1482static const char * const uart0_groups[] = {"uart0"};
1425static const char * const uart1_groups[] = {"uart1"}; 1483static const char * const uart1_groups[] = {"uart1"};
1426static const char * const uart2_groups[] = {"uart2"}; 1484static const char * const uart2_groups[] = {"uart2"};
@@ -1499,8 +1557,11 @@ static const char * const xirq_groups[] = {
1499 "xirq14b", "xirq17b", "xirq18b", 1557 "xirq14b", "xirq17b", "xirq18b",
1500}; 1558};
1501 1559
1502static const struct uniphier_pinmux_function ph1_pro4_functions[] = { 1560static const struct uniphier_pinmux_function uniphier_pro4_functions[] = {
1503 UNIPHIER_PINMUX_FUNCTION(emmc), 1561 UNIPHIER_PINMUX_FUNCTION(emmc),
1562 UNIPHIER_PINMUX_FUNCTION(ether_mii),
1563 UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
1564 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
1504 UNIPHIER_PINMUX_FUNCTION(i2c0), 1565 UNIPHIER_PINMUX_FUNCTION(i2c0),
1505 UNIPHIER_PINMUX_FUNCTION(i2c1), 1566 UNIPHIER_PINMUX_FUNCTION(i2c1),
1506 UNIPHIER_PINMUX_FUNCTION(i2c2), 1567 UNIPHIER_PINMUX_FUNCTION(i2c2),
@@ -1509,6 +1570,7 @@ static const struct uniphier_pinmux_function ph1_pro4_functions[] = {
1509 UNIPHIER_PINMUX_FUNCTION(nand), 1570 UNIPHIER_PINMUX_FUNCTION(nand),
1510 UNIPHIER_PINMUX_FUNCTION(sd), 1571 UNIPHIER_PINMUX_FUNCTION(sd),
1511 UNIPHIER_PINMUX_FUNCTION(sd1), 1572 UNIPHIER_PINMUX_FUNCTION(sd1),
1573 UNIPHIER_PINMUX_FUNCTION(system_bus),
1512 UNIPHIER_PINMUX_FUNCTION(uart0), 1574 UNIPHIER_PINMUX_FUNCTION(uart0),
1513 UNIPHIER_PINMUX_FUNCTION(uart1), 1575 UNIPHIER_PINMUX_FUNCTION(uart1),
1514 UNIPHIER_PINMUX_FUNCTION(uart2), 1576 UNIPHIER_PINMUX_FUNCTION(uart2),
@@ -1521,43 +1583,36 @@ static const struct uniphier_pinmux_function ph1_pro4_functions[] = {
1521 UNIPHIER_PINMUX_FUNCTION(xirq), 1583 UNIPHIER_PINMUX_FUNCTION(xirq),
1522}; 1584};
1523 1585
1524static struct uniphier_pinctrl_socdata ph1_pro4_pindata = { 1586static struct uniphier_pinctrl_socdata uniphier_pro4_pindata = {
1525 .groups = ph1_pro4_groups, 1587 .pins = uniphier_pro4_pins,
1526 .groups_count = ARRAY_SIZE(ph1_pro4_groups), 1588 .npins = ARRAY_SIZE(uniphier_pro4_pins),
1527 .functions = ph1_pro4_functions, 1589 .groups = uniphier_pro4_groups,
1528 .functions_count = ARRAY_SIZE(ph1_pro4_functions), 1590 .groups_count = ARRAY_SIZE(uniphier_pro4_groups),
1529 .mux_bits = 4, 1591 .functions = uniphier_pro4_functions,
1530 .reg_stride = 8, 1592 .functions_count = ARRAY_SIZE(uniphier_pro4_functions),
1531 .load_pinctrl = true, 1593 .caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE,
1532};
1533
1534static struct pinctrl_desc ph1_pro4_pinctrl_desc = {
1535 .name = DRIVER_NAME,
1536 .pins = ph1_pro4_pins,
1537 .npins = ARRAY_SIZE(ph1_pro4_pins),
1538 .owner = THIS_MODULE,
1539}; 1594};
1540 1595
1541static int ph1_pro4_pinctrl_probe(struct platform_device *pdev) 1596static int uniphier_pro4_pinctrl_probe(struct platform_device *pdev)
1542{ 1597{
1543 return uniphier_pinctrl_probe(pdev, &ph1_pro4_pinctrl_desc, 1598 return uniphier_pinctrl_probe(pdev, &uniphier_pro4_pindata);
1544 &ph1_pro4_pindata);
1545} 1599}
1546 1600
1547static const struct of_device_id ph1_pro4_pinctrl_match[] = { 1601static const struct of_device_id uniphier_pro4_pinctrl_match[] = {
1602 { .compatible = "socionext,uniphier-pro4-pinctrl" },
1548 { .compatible = "socionext,ph1-pro4-pinctrl" }, 1603 { .compatible = "socionext,ph1-pro4-pinctrl" },
1549 { /* sentinel */ } 1604 { /* sentinel */ }
1550}; 1605};
1551MODULE_DEVICE_TABLE(of, ph1_pro4_pinctrl_match); 1606MODULE_DEVICE_TABLE(of, uniphier_pro4_pinctrl_match);
1552 1607
1553static struct platform_driver ph1_pro4_pinctrl_driver = { 1608static struct platform_driver uniphier_pro4_pinctrl_driver = {
1554 .probe = ph1_pro4_pinctrl_probe, 1609 .probe = uniphier_pro4_pinctrl_probe,
1555 .driver = { 1610 .driver = {
1556 .name = DRIVER_NAME, 1611 .name = "uniphier-pro4-pinctrl",
1557 .of_match_table = ph1_pro4_pinctrl_match, 1612 .of_match_table = uniphier_pro4_pinctrl_match,
1558 }, 1613 },
1559}; 1614};
1560module_platform_driver(ph1_pro4_pinctrl_driver); 1615module_platform_driver(uniphier_pro4_pinctrl_driver);
1561 1616
1562MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1617MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
1563MODULE_DESCRIPTION("UniPhier PH1-Pro4 pinctrl driver"); 1618MODULE_DESCRIPTION("UniPhier PH1-Pro4 pinctrl driver");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c
index 3087f76752a6..55d4a12282a0 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c
@@ -19,823 +19,840 @@
19 19
20#include "pinctrl-uniphier.h" 20#include "pinctrl-uniphier.h"
21 21
22#define DRIVER_NAME "ph1-pro5-pinctrl" 22static const struct pinctrl_pin_desc uniphier_pro5_pins[] = {
23
24static const struct pinctrl_pin_desc ph1_pro5_pins[] = {
25 UNIPHIER_PINCTRL_PIN(0, "AEXCKA1", 0, 23 UNIPHIER_PINCTRL_PIN(0, "AEXCKA1", 0,
26 0, UNIPHIER_PIN_DRV_4_8, 24 0, UNIPHIER_PIN_DRV_1BIT,
27 0, UNIPHIER_PIN_PULL_DOWN), 25 0, UNIPHIER_PIN_PULL_DOWN),
28 UNIPHIER_PINCTRL_PIN(1, "AEXCKA2", 0, 26 UNIPHIER_PINCTRL_PIN(1, "AEXCKA2", 0,
29 1, UNIPHIER_PIN_DRV_4_8, 27 1, UNIPHIER_PIN_DRV_1BIT,
30 1, UNIPHIER_PIN_PULL_DOWN), 28 1, UNIPHIER_PIN_PULL_DOWN),
31 UNIPHIER_PINCTRL_PIN(2, "CK27EXI", 0, 29 UNIPHIER_PINCTRL_PIN(2, "CK27EXI", 0,
32 2, UNIPHIER_PIN_DRV_4_8, 30 2, UNIPHIER_PIN_DRV_1BIT,
33 2, UNIPHIER_PIN_PULL_DOWN), 31 2, UNIPHIER_PIN_PULL_DOWN),
34 UNIPHIER_PINCTRL_PIN(3, "CK54EXI", 0, 32 UNIPHIER_PINCTRL_PIN(3, "CK54EXI", 0,
35 3, UNIPHIER_PIN_DRV_4_8, 33 3, UNIPHIER_PIN_DRV_1BIT,
36 3, UNIPHIER_PIN_PULL_DOWN), 34 3, UNIPHIER_PIN_PULL_DOWN),
37 UNIPHIER_PINCTRL_PIN(4, "ED0", UNIPHIER_PIN_IECTRL_NONE, 35 UNIPHIER_PINCTRL_PIN(4, "ED0", UNIPHIER_PIN_IECTRL_NONE,
38 4, UNIPHIER_PIN_DRV_4_8, 36 4, UNIPHIER_PIN_DRV_1BIT,
39 4, UNIPHIER_PIN_PULL_DOWN), 37 4, UNIPHIER_PIN_PULL_DOWN),
40 UNIPHIER_PINCTRL_PIN(5, "ED1", UNIPHIER_PIN_IECTRL_NONE, 38 UNIPHIER_PINCTRL_PIN(5, "ED1", UNIPHIER_PIN_IECTRL_NONE,
41 5, UNIPHIER_PIN_DRV_4_8, 39 5, UNIPHIER_PIN_DRV_1BIT,
42 5, UNIPHIER_PIN_PULL_DOWN), 40 5, UNIPHIER_PIN_PULL_DOWN),
43 UNIPHIER_PINCTRL_PIN(6, "ED2", UNIPHIER_PIN_IECTRL_NONE, 41 UNIPHIER_PINCTRL_PIN(6, "ED2", UNIPHIER_PIN_IECTRL_NONE,
44 6, UNIPHIER_PIN_DRV_4_8, 42 6, UNIPHIER_PIN_DRV_1BIT,
45 6, UNIPHIER_PIN_PULL_DOWN), 43 6, UNIPHIER_PIN_PULL_DOWN),
46 UNIPHIER_PINCTRL_PIN(7, "ED3", UNIPHIER_PIN_IECTRL_NONE, 44 UNIPHIER_PINCTRL_PIN(7, "ED3", UNIPHIER_PIN_IECTRL_NONE,
47 7, UNIPHIER_PIN_DRV_4_8, 45 7, UNIPHIER_PIN_DRV_1BIT,
48 7, UNIPHIER_PIN_PULL_DOWN), 46 7, UNIPHIER_PIN_PULL_DOWN),
49 UNIPHIER_PINCTRL_PIN(8, "ED4", UNIPHIER_PIN_IECTRL_NONE, 47 UNIPHIER_PINCTRL_PIN(8, "ED4", UNIPHIER_PIN_IECTRL_NONE,
50 8, UNIPHIER_PIN_DRV_4_8, 48 8, UNIPHIER_PIN_DRV_1BIT,
51 8, UNIPHIER_PIN_PULL_DOWN), 49 8, UNIPHIER_PIN_PULL_DOWN),
52 UNIPHIER_PINCTRL_PIN(9, "ED5", UNIPHIER_PIN_IECTRL_NONE, 50 UNIPHIER_PINCTRL_PIN(9, "ED5", UNIPHIER_PIN_IECTRL_NONE,
53 9, UNIPHIER_PIN_DRV_4_8, 51 9, UNIPHIER_PIN_DRV_1BIT,
54 9, UNIPHIER_PIN_PULL_DOWN), 52 9, UNIPHIER_PIN_PULL_DOWN),
55 UNIPHIER_PINCTRL_PIN(10, "ED6", UNIPHIER_PIN_IECTRL_NONE, 53 UNIPHIER_PINCTRL_PIN(10, "ED6", UNIPHIER_PIN_IECTRL_NONE,
56 10, UNIPHIER_PIN_DRV_4_8, 54 10, UNIPHIER_PIN_DRV_1BIT,
57 10, UNIPHIER_PIN_PULL_DOWN), 55 10, UNIPHIER_PIN_PULL_DOWN),
58 UNIPHIER_PINCTRL_PIN(11, "ED7", UNIPHIER_PIN_IECTRL_NONE, 56 UNIPHIER_PINCTRL_PIN(11, "ED7", UNIPHIER_PIN_IECTRL_NONE,
59 11, UNIPHIER_PIN_DRV_4_8, 57 11, UNIPHIER_PIN_DRV_1BIT,
60 11, UNIPHIER_PIN_PULL_DOWN), 58 11, UNIPHIER_PIN_PULL_DOWN),
61 UNIPHIER_PINCTRL_PIN(12, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 59 UNIPHIER_PINCTRL_PIN(12, "XERWE0", UNIPHIER_PIN_IECTRL_NONE,
62 12, UNIPHIER_PIN_DRV_4_8, 60 12, UNIPHIER_PIN_DRV_1BIT,
63 12, UNIPHIER_PIN_PULL_UP), 61 12, UNIPHIER_PIN_PULL_UP),
64 UNIPHIER_PINCTRL_PIN(13, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 62 UNIPHIER_PINCTRL_PIN(13, "XERWE1", UNIPHIER_PIN_IECTRL_NONE,
65 13, UNIPHIER_PIN_DRV_4_8, 63 13, UNIPHIER_PIN_DRV_1BIT,
66 13, UNIPHIER_PIN_PULL_UP), 64 13, UNIPHIER_PIN_PULL_UP),
67 UNIPHIER_PINCTRL_PIN(14, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 65 UNIPHIER_PINCTRL_PIN(14, "ERXW", UNIPHIER_PIN_IECTRL_NONE,
68 14, UNIPHIER_PIN_DRV_4_8, 66 14, UNIPHIER_PIN_DRV_1BIT,
69 14, UNIPHIER_PIN_PULL_UP), 67 14, UNIPHIER_PIN_PULL_UP),
70 UNIPHIER_PINCTRL_PIN(15, "ES0", UNIPHIER_PIN_IECTRL_NONE, 68 UNIPHIER_PINCTRL_PIN(15, "ES0", UNIPHIER_PIN_IECTRL_NONE,
71 15, UNIPHIER_PIN_DRV_4_8, 69 15, UNIPHIER_PIN_DRV_1BIT,
72 15, UNIPHIER_PIN_PULL_UP), 70 15, UNIPHIER_PIN_PULL_UP),
73 UNIPHIER_PINCTRL_PIN(16, "ES1", UNIPHIER_PIN_IECTRL_NONE, 71 UNIPHIER_PINCTRL_PIN(16, "ES1", UNIPHIER_PIN_IECTRL_NONE,
74 16, UNIPHIER_PIN_DRV_4_8, 72 16, UNIPHIER_PIN_DRV_1BIT,
75 16, UNIPHIER_PIN_PULL_UP), 73 16, UNIPHIER_PIN_PULL_UP),
76 UNIPHIER_PINCTRL_PIN(17, "ES2", UNIPHIER_PIN_IECTRL_NONE, 74 UNIPHIER_PINCTRL_PIN(17, "ES2", UNIPHIER_PIN_IECTRL_NONE,
77 17, UNIPHIER_PIN_DRV_4_8, 75 17, UNIPHIER_PIN_DRV_1BIT,
78 17, UNIPHIER_PIN_PULL_UP), 76 17, UNIPHIER_PIN_PULL_UP),
79 UNIPHIER_PINCTRL_PIN(18, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 77 UNIPHIER_PINCTRL_PIN(18, "XECS1", UNIPHIER_PIN_IECTRL_NONE,
80 18, UNIPHIER_PIN_DRV_4_8, 78 18, UNIPHIER_PIN_DRV_1BIT,
81 18, UNIPHIER_PIN_PULL_UP), 79 18, UNIPHIER_PIN_PULL_UP),
82 UNIPHIER_PINCTRL_PIN(19, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 80 UNIPHIER_PINCTRL_PIN(19, "XNFRE", UNIPHIER_PIN_IECTRL_NONE,
83 19, UNIPHIER_PIN_DRV_4_8, 81 19, UNIPHIER_PIN_DRV_1BIT,
84 19, UNIPHIER_PIN_PULL_UP), 82 19, UNIPHIER_PIN_PULL_UP),
85 UNIPHIER_PINCTRL_PIN(20, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 83 UNIPHIER_PINCTRL_PIN(20, "XNFWE", UNIPHIER_PIN_IECTRL_NONE,
86 20, UNIPHIER_PIN_DRV_4_8, 84 20, UNIPHIER_PIN_DRV_1BIT,
87 20, UNIPHIER_PIN_PULL_UP), 85 20, UNIPHIER_PIN_PULL_UP),
88 UNIPHIER_PINCTRL_PIN(21, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 86 UNIPHIER_PINCTRL_PIN(21, "NFALE", UNIPHIER_PIN_IECTRL_NONE,
89 21, UNIPHIER_PIN_DRV_4_8, 87 21, UNIPHIER_PIN_DRV_1BIT,
90 21, UNIPHIER_PIN_PULL_DOWN), 88 21, UNIPHIER_PIN_PULL_DOWN),
91 UNIPHIER_PINCTRL_PIN(22, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 89 UNIPHIER_PINCTRL_PIN(22, "NFCLE", UNIPHIER_PIN_IECTRL_NONE,
92 22, UNIPHIER_PIN_DRV_4_8, 90 22, UNIPHIER_PIN_DRV_1BIT,
93 22, UNIPHIER_PIN_PULL_DOWN), 91 22, UNIPHIER_PIN_PULL_DOWN),
94 UNIPHIER_PINCTRL_PIN(23, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 92 UNIPHIER_PINCTRL_PIN(23, "XNFWP", UNIPHIER_PIN_IECTRL_NONE,
95 23, UNIPHIER_PIN_DRV_4_8, 93 23, UNIPHIER_PIN_DRV_1BIT,
96 23, UNIPHIER_PIN_PULL_DOWN), 94 23, UNIPHIER_PIN_PULL_DOWN),
97 UNIPHIER_PINCTRL_PIN(24, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 95 UNIPHIER_PINCTRL_PIN(24, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE,
98 24, UNIPHIER_PIN_DRV_4_8, 96 24, UNIPHIER_PIN_DRV_1BIT,
99 24, UNIPHIER_PIN_PULL_UP), 97 24, UNIPHIER_PIN_PULL_UP),
100 UNIPHIER_PINCTRL_PIN(25, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE, 98 UNIPHIER_PINCTRL_PIN(25, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE,
101 25, UNIPHIER_PIN_DRV_4_8, 99 25, UNIPHIER_PIN_DRV_1BIT,
102 25, UNIPHIER_PIN_PULL_UP), 100 25, UNIPHIER_PIN_PULL_UP),
103 UNIPHIER_PINCTRL_PIN(26, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE, 101 UNIPHIER_PINCTRL_PIN(26, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE,
104 26, UNIPHIER_PIN_DRV_4_8, 102 26, UNIPHIER_PIN_DRV_1BIT,
105 26, UNIPHIER_PIN_PULL_UP), 103 26, UNIPHIER_PIN_PULL_UP),
106 UNIPHIER_PINCTRL_PIN(27, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE, 104 UNIPHIER_PINCTRL_PIN(27, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE,
107 27, UNIPHIER_PIN_DRV_4_8, 105 27, UNIPHIER_PIN_DRV_1BIT,
108 27, UNIPHIER_PIN_PULL_UP), 106 27, UNIPHIER_PIN_PULL_UP),
109 UNIPHIER_PINCTRL_PIN(28, "NFD0", UNIPHIER_PIN_IECTRL_NONE, 107 UNIPHIER_PINCTRL_PIN(28, "NFD0", UNIPHIER_PIN_IECTRL_NONE,
110 28, UNIPHIER_PIN_DRV_4_8, 108 28, UNIPHIER_PIN_DRV_1BIT,
111 28, UNIPHIER_PIN_PULL_UP), 109 28, UNIPHIER_PIN_PULL_UP),
112 UNIPHIER_PINCTRL_PIN(29, "NFD1", UNIPHIER_PIN_IECTRL_NONE, 110 UNIPHIER_PINCTRL_PIN(29, "NFD1", UNIPHIER_PIN_IECTRL_NONE,
113 29, UNIPHIER_PIN_DRV_4_8, 111 29, UNIPHIER_PIN_DRV_1BIT,
114 29, UNIPHIER_PIN_PULL_UP), 112 29, UNIPHIER_PIN_PULL_UP),
115 UNIPHIER_PINCTRL_PIN(30, "NFD2", UNIPHIER_PIN_IECTRL_NONE, 113 UNIPHIER_PINCTRL_PIN(30, "NFD2", UNIPHIER_PIN_IECTRL_NONE,
116 30, UNIPHIER_PIN_DRV_4_8, 114 30, UNIPHIER_PIN_DRV_1BIT,
117 30, UNIPHIER_PIN_PULL_UP), 115 30, UNIPHIER_PIN_PULL_UP),
118 UNIPHIER_PINCTRL_PIN(31, "NFD3", UNIPHIER_PIN_IECTRL_NONE, 116 UNIPHIER_PINCTRL_PIN(31, "NFD3", UNIPHIER_PIN_IECTRL_NONE,
119 31, UNIPHIER_PIN_DRV_4_8, 117 31, UNIPHIER_PIN_DRV_1BIT,
120 31, UNIPHIER_PIN_PULL_UP), 118 31, UNIPHIER_PIN_PULL_UP),
121 UNIPHIER_PINCTRL_PIN(32, "NFD4", UNIPHIER_PIN_IECTRL_NONE, 119 UNIPHIER_PINCTRL_PIN(32, "NFD4", UNIPHIER_PIN_IECTRL_NONE,
122 32, UNIPHIER_PIN_DRV_4_8, 120 32, UNIPHIER_PIN_DRV_1BIT,
123 32, UNIPHIER_PIN_PULL_UP), 121 32, UNIPHIER_PIN_PULL_UP),
124 UNIPHIER_PINCTRL_PIN(33, "NFD5", UNIPHIER_PIN_IECTRL_NONE, 122 UNIPHIER_PINCTRL_PIN(33, "NFD5", UNIPHIER_PIN_IECTRL_NONE,
125 33, UNIPHIER_PIN_DRV_4_8, 123 33, UNIPHIER_PIN_DRV_1BIT,
126 33, UNIPHIER_PIN_PULL_UP), 124 33, UNIPHIER_PIN_PULL_UP),
127 UNIPHIER_PINCTRL_PIN(34, "NFD6", UNIPHIER_PIN_IECTRL_NONE, 125 UNIPHIER_PINCTRL_PIN(34, "NFD6", UNIPHIER_PIN_IECTRL_NONE,
128 34, UNIPHIER_PIN_DRV_4_8, 126 34, UNIPHIER_PIN_DRV_1BIT,
129 34, UNIPHIER_PIN_PULL_UP), 127 34, UNIPHIER_PIN_PULL_UP),
130 UNIPHIER_PINCTRL_PIN(35, "NFD7", UNIPHIER_PIN_IECTRL_NONE, 128 UNIPHIER_PINCTRL_PIN(35, "NFD7", UNIPHIER_PIN_IECTRL_NONE,
131 35, UNIPHIER_PIN_DRV_4_8, 129 35, UNIPHIER_PIN_DRV_1BIT,
132 35, UNIPHIER_PIN_PULL_UP), 130 35, UNIPHIER_PIN_PULL_UP),
133 UNIPHIER_PINCTRL_PIN(36, "XERST", UNIPHIER_PIN_IECTRL_NONE, 131 UNIPHIER_PINCTRL_PIN(36, "XERST", UNIPHIER_PIN_IECTRL_NONE,
134 36, UNIPHIER_PIN_DRV_4_8, 132 36, UNIPHIER_PIN_DRV_1BIT,
135 36, UNIPHIER_PIN_PULL_UP), 133 36, UNIPHIER_PIN_PULL_UP),
136 UNIPHIER_PINCTRL_PIN(37, "MMCCLK", UNIPHIER_PIN_IECTRL_NONE, 134 UNIPHIER_PINCTRL_PIN(37, "MMCCLK", UNIPHIER_PIN_IECTRL_NONE,
137 37, UNIPHIER_PIN_DRV_4_8, 135 37, UNIPHIER_PIN_DRV_1BIT,
138 37, UNIPHIER_PIN_PULL_UP), 136 37, UNIPHIER_PIN_PULL_UP),
139 UNIPHIER_PINCTRL_PIN(38, "MMCCMD", UNIPHIER_PIN_IECTRL_NONE, 137 UNIPHIER_PINCTRL_PIN(38, "MMCCMD", UNIPHIER_PIN_IECTRL_NONE,
140 38, UNIPHIER_PIN_DRV_4_8, 138 38, UNIPHIER_PIN_DRV_1BIT,
141 38, UNIPHIER_PIN_PULL_UP), 139 38, UNIPHIER_PIN_PULL_UP),
142 UNIPHIER_PINCTRL_PIN(39, "MMCDAT0", UNIPHIER_PIN_IECTRL_NONE, 140 UNIPHIER_PINCTRL_PIN(39, "MMCDAT0", UNIPHIER_PIN_IECTRL_NONE,
143 39, UNIPHIER_PIN_DRV_4_8, 141 39, UNIPHIER_PIN_DRV_1BIT,
144 39, UNIPHIER_PIN_PULL_UP), 142 39, UNIPHIER_PIN_PULL_UP),
145 UNIPHIER_PINCTRL_PIN(40, "MMCDAT1", UNIPHIER_PIN_IECTRL_NONE, 143 UNIPHIER_PINCTRL_PIN(40, "MMCDAT1", UNIPHIER_PIN_IECTRL_NONE,
146 40, UNIPHIER_PIN_DRV_4_8, 144 40, UNIPHIER_PIN_DRV_1BIT,
147 40, UNIPHIER_PIN_PULL_UP), 145 40, UNIPHIER_PIN_PULL_UP),
148 UNIPHIER_PINCTRL_PIN(41, "MMCDAT2", UNIPHIER_PIN_IECTRL_NONE, 146 UNIPHIER_PINCTRL_PIN(41, "MMCDAT2", UNIPHIER_PIN_IECTRL_NONE,
149 41, UNIPHIER_PIN_DRV_4_8, 147 41, UNIPHIER_PIN_DRV_1BIT,
150 41, UNIPHIER_PIN_PULL_UP), 148 41, UNIPHIER_PIN_PULL_UP),
151 UNIPHIER_PINCTRL_PIN(42, "MMCDAT3", UNIPHIER_PIN_IECTRL_NONE, 149 UNIPHIER_PINCTRL_PIN(42, "MMCDAT3", UNIPHIER_PIN_IECTRL_NONE,
152 42, UNIPHIER_PIN_DRV_4_8, 150 42, UNIPHIER_PIN_DRV_1BIT,
153 42, UNIPHIER_PIN_PULL_UP), 151 42, UNIPHIER_PIN_PULL_UP),
154 UNIPHIER_PINCTRL_PIN(43, "MMCDAT4", UNIPHIER_PIN_IECTRL_NONE, 152 UNIPHIER_PINCTRL_PIN(43, "MMCDAT4", UNIPHIER_PIN_IECTRL_NONE,
155 43, UNIPHIER_PIN_DRV_4_8, 153 43, UNIPHIER_PIN_DRV_1BIT,
156 43, UNIPHIER_PIN_PULL_UP), 154 43, UNIPHIER_PIN_PULL_UP),
157 UNIPHIER_PINCTRL_PIN(44, "MMCDAT5", UNIPHIER_PIN_IECTRL_NONE, 155 UNIPHIER_PINCTRL_PIN(44, "MMCDAT5", UNIPHIER_PIN_IECTRL_NONE,
158 44, UNIPHIER_PIN_DRV_4_8, 156 44, UNIPHIER_PIN_DRV_1BIT,
159 44, UNIPHIER_PIN_PULL_UP), 157 44, UNIPHIER_PIN_PULL_UP),
160 UNIPHIER_PINCTRL_PIN(45, "MMCDAT6", UNIPHIER_PIN_IECTRL_NONE, 158 UNIPHIER_PINCTRL_PIN(45, "MMCDAT6", UNIPHIER_PIN_IECTRL_NONE,
161 45, UNIPHIER_PIN_DRV_4_8, 159 45, UNIPHIER_PIN_DRV_1BIT,
162 45, UNIPHIER_PIN_PULL_UP), 160 45, UNIPHIER_PIN_PULL_UP),
163 UNIPHIER_PINCTRL_PIN(46, "MMCDAT7", UNIPHIER_PIN_IECTRL_NONE, 161 UNIPHIER_PINCTRL_PIN(46, "MMCDAT7", UNIPHIER_PIN_IECTRL_NONE,
164 46, UNIPHIER_PIN_DRV_4_8, 162 46, UNIPHIER_PIN_DRV_1BIT,
165 46, UNIPHIER_PIN_PULL_UP), 163 46, UNIPHIER_PIN_PULL_UP),
166 UNIPHIER_PINCTRL_PIN(47, "TXD0", 0, 164 UNIPHIER_PINCTRL_PIN(47, "TXD0", 0,
167 47, UNIPHIER_PIN_DRV_4_8, 165 47, UNIPHIER_PIN_DRV_1BIT,
168 47, UNIPHIER_PIN_PULL_UP), 166 47, UNIPHIER_PIN_PULL_UP),
169 UNIPHIER_PINCTRL_PIN(48, "RXD0", 0, 167 UNIPHIER_PINCTRL_PIN(48, "RXD0", 0,
170 48, UNIPHIER_PIN_DRV_4_8, 168 48, UNIPHIER_PIN_DRV_1BIT,
171 48, UNIPHIER_PIN_PULL_UP), 169 48, UNIPHIER_PIN_PULL_UP),
172 UNIPHIER_PINCTRL_PIN(49, "TXD1", 0, 170 UNIPHIER_PINCTRL_PIN(49, "TXD1", 0,
173 49, UNIPHIER_PIN_DRV_4_8, 171 49, UNIPHIER_PIN_DRV_1BIT,
174 49, UNIPHIER_PIN_PULL_UP), 172 49, UNIPHIER_PIN_PULL_UP),
175 UNIPHIER_PINCTRL_PIN(50, "RXD1", 0, 173 UNIPHIER_PINCTRL_PIN(50, "RXD1", 0,
176 50, UNIPHIER_PIN_DRV_4_8, 174 50, UNIPHIER_PIN_DRV_1BIT,
177 50, UNIPHIER_PIN_PULL_UP), 175 50, UNIPHIER_PIN_PULL_UP),
178 UNIPHIER_PINCTRL_PIN(51, "TXD2", UNIPHIER_PIN_IECTRL_NONE, 176 UNIPHIER_PINCTRL_PIN(51, "TXD2", UNIPHIER_PIN_IECTRL_NONE,
179 51, UNIPHIER_PIN_DRV_4_8, 177 51, UNIPHIER_PIN_DRV_1BIT,
180 51, UNIPHIER_PIN_PULL_UP), 178 51, UNIPHIER_PIN_PULL_UP),
181 UNIPHIER_PINCTRL_PIN(52, "RXD2", UNIPHIER_PIN_IECTRL_NONE, 179 UNIPHIER_PINCTRL_PIN(52, "RXD2", UNIPHIER_PIN_IECTRL_NONE,
182 52, UNIPHIER_PIN_DRV_4_8, 180 52, UNIPHIER_PIN_DRV_1BIT,
183 52, UNIPHIER_PIN_PULL_UP), 181 52, UNIPHIER_PIN_PULL_UP),
184 UNIPHIER_PINCTRL_PIN(53, "TXD3", 0, 182 UNIPHIER_PINCTRL_PIN(53, "TXD3", 0,
185 53, UNIPHIER_PIN_DRV_4_8, 183 53, UNIPHIER_PIN_DRV_1BIT,
186 53, UNIPHIER_PIN_PULL_UP), 184 53, UNIPHIER_PIN_PULL_UP),
187 UNIPHIER_PINCTRL_PIN(54, "RXD3", 0, 185 UNIPHIER_PINCTRL_PIN(54, "RXD3", 0,
188 54, UNIPHIER_PIN_DRV_4_8, 186 54, UNIPHIER_PIN_DRV_1BIT,
189 54, UNIPHIER_PIN_PULL_UP), 187 54, UNIPHIER_PIN_PULL_UP),
190 UNIPHIER_PINCTRL_PIN(55, "MS0CS0", 0, 188 UNIPHIER_PINCTRL_PIN(55, "MS0CS0", 0,
191 55, UNIPHIER_PIN_DRV_4_8, 189 55, UNIPHIER_PIN_DRV_1BIT,
192 55, UNIPHIER_PIN_PULL_DOWN), 190 55, UNIPHIER_PIN_PULL_DOWN),
193 UNIPHIER_PINCTRL_PIN(56, "MS0DO", 0, 191 UNIPHIER_PINCTRL_PIN(56, "MS0DO", 0,
194 56, UNIPHIER_PIN_DRV_4_8, 192 56, UNIPHIER_PIN_DRV_1BIT,
195 56, UNIPHIER_PIN_PULL_DOWN), 193 56, UNIPHIER_PIN_PULL_DOWN),
196 UNIPHIER_PINCTRL_PIN(57, "MS0DI", 0, 194 UNIPHIER_PINCTRL_PIN(57, "MS0DI", 0,
197 57, UNIPHIER_PIN_DRV_4_8, 195 57, UNIPHIER_PIN_DRV_1BIT,
198 57, UNIPHIER_PIN_PULL_DOWN), 196 57, UNIPHIER_PIN_PULL_DOWN),
199 UNIPHIER_PINCTRL_PIN(58, "MS0CLK", 0, 197 UNIPHIER_PINCTRL_PIN(58, "MS0CLK", 0,
200 58, UNIPHIER_PIN_DRV_4_8, 198 58, UNIPHIER_PIN_DRV_1BIT,
201 58, UNIPHIER_PIN_PULL_DOWN), 199 58, UNIPHIER_PIN_PULL_DOWN),
202 UNIPHIER_PINCTRL_PIN(59, "CSCLK", 0, 200 UNIPHIER_PINCTRL_PIN(59, "CSCLK", 0,
203 59, UNIPHIER_PIN_DRV_4_8, 201 59, UNIPHIER_PIN_DRV_1BIT,
204 59, UNIPHIER_PIN_PULL_DOWN), 202 59, UNIPHIER_PIN_PULL_DOWN),
205 UNIPHIER_PINCTRL_PIN(60, "CSBPTM", 0, 203 UNIPHIER_PINCTRL_PIN(60, "CSBPTM", 0,
206 60, UNIPHIER_PIN_DRV_4_8, 204 60, UNIPHIER_PIN_DRV_1BIT,
207 60, UNIPHIER_PIN_PULL_DOWN), 205 60, UNIPHIER_PIN_PULL_DOWN),
208 UNIPHIER_PINCTRL_PIN(61, "CSBMTP", 0, 206 UNIPHIER_PINCTRL_PIN(61, "CSBMTP", 0,
209 61, UNIPHIER_PIN_DRV_4_8, 207 61, UNIPHIER_PIN_DRV_1BIT,
210 61, UNIPHIER_PIN_PULL_DOWN), 208 61, UNIPHIER_PIN_PULL_DOWN),
211 UNIPHIER_PINCTRL_PIN(62, "XCINTP", 0, 209 UNIPHIER_PINCTRL_PIN(62, "XCINTP", 0,
212 62, UNIPHIER_PIN_DRV_4_8, 210 62, UNIPHIER_PIN_DRV_1BIT,
213 62, UNIPHIER_PIN_PULL_DOWN), 211 62, UNIPHIER_PIN_PULL_DOWN),
214 UNIPHIER_PINCTRL_PIN(63, "XCINTM", 0, 212 UNIPHIER_PINCTRL_PIN(63, "XCINTM", 0,
215 63, UNIPHIER_PIN_DRV_4_8, 213 63, UNIPHIER_PIN_DRV_1BIT,
216 63, UNIPHIER_PIN_PULL_DOWN), 214 63, UNIPHIER_PIN_PULL_DOWN),
217 UNIPHIER_PINCTRL_PIN(64, "XCMPREQ", 0, 215 UNIPHIER_PINCTRL_PIN(64, "XCMPREQ", 0,
218 64, UNIPHIER_PIN_DRV_4_8, 216 64, UNIPHIER_PIN_DRV_1BIT,
219 64, UNIPHIER_PIN_PULL_DOWN), 217 64, UNIPHIER_PIN_PULL_DOWN),
220 UNIPHIER_PINCTRL_PIN(65, "XSRST", 0, 218 UNIPHIER_PINCTRL_PIN(65, "XSRST", 0,
221 65, UNIPHIER_PIN_DRV_4_8, 219 65, UNIPHIER_PIN_DRV_1BIT,
222 65, UNIPHIER_PIN_PULL_DOWN), 220 65, UNIPHIER_PIN_PULL_DOWN),
223 UNIPHIER_PINCTRL_PIN(66, "LPST", UNIPHIER_PIN_IECTRL_NONE, 221 UNIPHIER_PINCTRL_PIN(66, "LPST", UNIPHIER_PIN_IECTRL_NONE,
224 66, UNIPHIER_PIN_DRV_4_8, 222 66, UNIPHIER_PIN_DRV_1BIT,
225 66, UNIPHIER_PIN_PULL_DOWN), 223 66, UNIPHIER_PIN_PULL_DOWN),
226 UNIPHIER_PINCTRL_PIN(67, "PWMA", 0, 224 UNIPHIER_PINCTRL_PIN(67, "PWMA", 0,
227 67, UNIPHIER_PIN_DRV_4_8, 225 67, UNIPHIER_PIN_DRV_1BIT,
228 67, UNIPHIER_PIN_PULL_DOWN), 226 67, UNIPHIER_PIN_PULL_DOWN),
229 UNIPHIER_PINCTRL_PIN(68, "XIRQ0", 0, 227 UNIPHIER_PINCTRL_PIN(68, "XIRQ0", 0,
230 68, UNIPHIER_PIN_DRV_4_8, 228 68, UNIPHIER_PIN_DRV_1BIT,
231 68, UNIPHIER_PIN_PULL_DOWN), 229 68, UNIPHIER_PIN_PULL_DOWN),
232 UNIPHIER_PINCTRL_PIN(69, "XIRQ1", 0, 230 UNIPHIER_PINCTRL_PIN(69, "XIRQ1", 0,
233 69, UNIPHIER_PIN_DRV_4_8, 231 69, UNIPHIER_PIN_DRV_1BIT,
234 69, UNIPHIER_PIN_PULL_DOWN), 232 69, UNIPHIER_PIN_PULL_DOWN),
235 UNIPHIER_PINCTRL_PIN(70, "XIRQ2", 0, 233 UNIPHIER_PINCTRL_PIN(70, "XIRQ2", 0,
236 70, UNIPHIER_PIN_DRV_4_8, 234 70, UNIPHIER_PIN_DRV_1BIT,
237 70, UNIPHIER_PIN_PULL_DOWN), 235 70, UNIPHIER_PIN_PULL_DOWN),
238 UNIPHIER_PINCTRL_PIN(71, "XIRQ3", 0, 236 UNIPHIER_PINCTRL_PIN(71, "XIRQ3", 0,
239 71, UNIPHIER_PIN_DRV_4_8, 237 71, UNIPHIER_PIN_DRV_1BIT,
240 71, UNIPHIER_PIN_PULL_DOWN), 238 71, UNIPHIER_PIN_PULL_DOWN),
241 UNIPHIER_PINCTRL_PIN(72, "XIRQ4", 0, 239 UNIPHIER_PINCTRL_PIN(72, "XIRQ4", 0,
242 72, UNIPHIER_PIN_DRV_4_8, 240 72, UNIPHIER_PIN_DRV_1BIT,
243 72, UNIPHIER_PIN_PULL_DOWN), 241 72, UNIPHIER_PIN_PULL_DOWN),
244 UNIPHIER_PINCTRL_PIN(73, "XIRQ5", 0, 242 UNIPHIER_PINCTRL_PIN(73, "XIRQ5", 0,
245 73, UNIPHIER_PIN_DRV_4_8, 243 73, UNIPHIER_PIN_DRV_1BIT,
246 73, UNIPHIER_PIN_PULL_DOWN), 244 73, UNIPHIER_PIN_PULL_DOWN),
247 UNIPHIER_PINCTRL_PIN(74, "XIRQ6", 0, 245 UNIPHIER_PINCTRL_PIN(74, "XIRQ6", 0,
248 74, UNIPHIER_PIN_DRV_4_8, 246 74, UNIPHIER_PIN_DRV_1BIT,
249 74, UNIPHIER_PIN_PULL_DOWN), 247 74, UNIPHIER_PIN_PULL_DOWN),
250 UNIPHIER_PINCTRL_PIN(75, "XIRQ7", 0, 248 UNIPHIER_PINCTRL_PIN(75, "XIRQ7", 0,
251 75, UNIPHIER_PIN_DRV_4_8, 249 75, UNIPHIER_PIN_DRV_1BIT,
252 75, UNIPHIER_PIN_PULL_DOWN), 250 75, UNIPHIER_PIN_PULL_DOWN),
253 UNIPHIER_PINCTRL_PIN(76, "XIRQ8", 0, 251 UNIPHIER_PINCTRL_PIN(76, "XIRQ8", 0,
254 76, UNIPHIER_PIN_DRV_4_8, 252 76, UNIPHIER_PIN_DRV_1BIT,
255 76, UNIPHIER_PIN_PULL_DOWN), 253 76, UNIPHIER_PIN_PULL_DOWN),
256 UNIPHIER_PINCTRL_PIN(77, "XIRQ9", 0, 254 UNIPHIER_PINCTRL_PIN(77, "XIRQ9", 0,
257 77, UNIPHIER_PIN_DRV_4_8, 255 77, UNIPHIER_PIN_DRV_1BIT,
258 77, UNIPHIER_PIN_PULL_DOWN), 256 77, UNIPHIER_PIN_PULL_DOWN),
259 UNIPHIER_PINCTRL_PIN(78, "XIRQ10", 0, 257 UNIPHIER_PINCTRL_PIN(78, "XIRQ10", 0,
260 78, UNIPHIER_PIN_DRV_4_8, 258 78, UNIPHIER_PIN_DRV_1BIT,
261 78, UNIPHIER_PIN_PULL_DOWN), 259 78, UNIPHIER_PIN_PULL_DOWN),
262 UNIPHIER_PINCTRL_PIN(79, "XIRQ11", UNIPHIER_PIN_IECTRL_NONE, 260 UNIPHIER_PINCTRL_PIN(79, "XIRQ11", UNIPHIER_PIN_IECTRL_NONE,
263 -1, UNIPHIER_PIN_DRV_FIXED_8, 261 -1, UNIPHIER_PIN_DRV_FIXED8,
264 79, UNIPHIER_PIN_PULL_DOWN), 262 79, UNIPHIER_PIN_PULL_DOWN),
265 UNIPHIER_PINCTRL_PIN(80, "XIRQ12", UNIPHIER_PIN_IECTRL_NONE, 263 UNIPHIER_PINCTRL_PIN(80, "XIRQ12", UNIPHIER_PIN_IECTRL_NONE,
266 -1, UNIPHIER_PIN_DRV_FIXED_8, 264 -1, UNIPHIER_PIN_DRV_FIXED8,
267 80, UNIPHIER_PIN_PULL_DOWN), 265 80, UNIPHIER_PIN_PULL_DOWN),
268 UNIPHIER_PINCTRL_PIN(81, "XIRQ13", UNIPHIER_PIN_IECTRL_NONE, 266 UNIPHIER_PINCTRL_PIN(81, "XIRQ13", UNIPHIER_PIN_IECTRL_NONE,
269 -1, UNIPHIER_PIN_DRV_FIXED_8, 267 -1, UNIPHIER_PIN_DRV_FIXED8,
270 81, UNIPHIER_PIN_PULL_DOWN), 268 81, UNIPHIER_PIN_PULL_DOWN),
271 UNIPHIER_PINCTRL_PIN(82, "XIRQ14", 0, 269 UNIPHIER_PINCTRL_PIN(82, "XIRQ14", 0,
272 82, UNIPHIER_PIN_DRV_4_8, 270 82, UNIPHIER_PIN_DRV_1BIT,
273 82, UNIPHIER_PIN_PULL_DOWN), 271 82, UNIPHIER_PIN_PULL_DOWN),
274 UNIPHIER_PINCTRL_PIN(83, "XIRQ15", 0, 272 UNIPHIER_PINCTRL_PIN(83, "XIRQ15", 0,
275 83, UNIPHIER_PIN_DRV_4_8, 273 83, UNIPHIER_PIN_DRV_1BIT,
276 83, UNIPHIER_PIN_PULL_DOWN), 274 83, UNIPHIER_PIN_PULL_DOWN),
277 UNIPHIER_PINCTRL_PIN(84, "XIRQ16", 0, 275 UNIPHIER_PINCTRL_PIN(84, "XIRQ16", 0,
278 84, UNIPHIER_PIN_DRV_4_8, 276 84, UNIPHIER_PIN_DRV_1BIT,
279 84, UNIPHIER_PIN_PULL_DOWN), 277 84, UNIPHIER_PIN_PULL_DOWN),
280 UNIPHIER_PINCTRL_PIN(85, "XIRQ17", UNIPHIER_PIN_IECTRL_NONE, 278 UNIPHIER_PINCTRL_PIN(85, "XIRQ17", UNIPHIER_PIN_IECTRL_NONE,
281 -1, UNIPHIER_PIN_DRV_FIXED_8, 279 -1, UNIPHIER_PIN_DRV_FIXED8,
282 85, UNIPHIER_PIN_PULL_DOWN), 280 85, UNIPHIER_PIN_PULL_DOWN),
283 UNIPHIER_PINCTRL_PIN(86, "XIRQ18", UNIPHIER_PIN_IECTRL_NONE, 281 UNIPHIER_PINCTRL_PIN(86, "XIRQ18", UNIPHIER_PIN_IECTRL_NONE,
284 -1, UNIPHIER_PIN_DRV_FIXED_8, 282 -1, UNIPHIER_PIN_DRV_FIXED8,
285 86, UNIPHIER_PIN_PULL_DOWN), 283 86, UNIPHIER_PIN_PULL_DOWN),
286 UNIPHIER_PINCTRL_PIN(87, "XIRQ19", 0, 284 UNIPHIER_PINCTRL_PIN(87, "XIRQ19", 0,
287 87, UNIPHIER_PIN_DRV_4_8, 285 87, UNIPHIER_PIN_DRV_1BIT,
288 87, UNIPHIER_PIN_PULL_DOWN), 286 87, UNIPHIER_PIN_PULL_DOWN),
289 UNIPHIER_PINCTRL_PIN(88, "XIRQ20", 0, 287 UNIPHIER_PINCTRL_PIN(88, "XIRQ20", 0,
290 88, UNIPHIER_PIN_DRV_4_8, 288 88, UNIPHIER_PIN_DRV_1BIT,
291 88, UNIPHIER_PIN_PULL_DOWN), 289 88, UNIPHIER_PIN_PULL_DOWN),
292 UNIPHIER_PINCTRL_PIN(89, "PORT00", 0, 290 UNIPHIER_PINCTRL_PIN(89, "PORT00", 0,
293 89, UNIPHIER_PIN_DRV_4_8, 291 89, UNIPHIER_PIN_DRV_1BIT,
294 89, UNIPHIER_PIN_PULL_DOWN), 292 89, UNIPHIER_PIN_PULL_DOWN),
295 UNIPHIER_PINCTRL_PIN(90, "PORT01", 0, 293 UNIPHIER_PINCTRL_PIN(90, "PORT01", 0,
296 90, UNIPHIER_PIN_DRV_4_8, 294 90, UNIPHIER_PIN_DRV_1BIT,
297 90, UNIPHIER_PIN_PULL_DOWN), 295 90, UNIPHIER_PIN_PULL_DOWN),
298 UNIPHIER_PINCTRL_PIN(91, "PORT02", 0, 296 UNIPHIER_PINCTRL_PIN(91, "PORT02", 0,
299 91, UNIPHIER_PIN_DRV_4_8, 297 91, UNIPHIER_PIN_DRV_1BIT,
300 91, UNIPHIER_PIN_PULL_DOWN), 298 91, UNIPHIER_PIN_PULL_DOWN),
301 UNIPHIER_PINCTRL_PIN(92, "PORT03", 0, 299 UNIPHIER_PINCTRL_PIN(92, "PORT03", 0,
302 92, UNIPHIER_PIN_DRV_4_8, 300 92, UNIPHIER_PIN_DRV_1BIT,
303 92, UNIPHIER_PIN_PULL_DOWN), 301 92, UNIPHIER_PIN_PULL_DOWN),
304 UNIPHIER_PINCTRL_PIN(93, "PORT04", 0, 302 UNIPHIER_PINCTRL_PIN(93, "PORT04", 0,
305 93, UNIPHIER_PIN_DRV_4_8, 303 93, UNIPHIER_PIN_DRV_1BIT,
306 93, UNIPHIER_PIN_PULL_DOWN), 304 93, UNIPHIER_PIN_PULL_DOWN),
307 UNIPHIER_PINCTRL_PIN(94, "PORT05", 0, 305 UNIPHIER_PINCTRL_PIN(94, "PORT05", 0,
308 94, UNIPHIER_PIN_DRV_4_8, 306 94, UNIPHIER_PIN_DRV_1BIT,
309 94, UNIPHIER_PIN_PULL_DOWN), 307 94, UNIPHIER_PIN_PULL_DOWN),
310 UNIPHIER_PINCTRL_PIN(95, "PORT06", 0, 308 UNIPHIER_PINCTRL_PIN(95, "PORT06", 0,
311 95, UNIPHIER_PIN_DRV_4_8, 309 95, UNIPHIER_PIN_DRV_1BIT,
312 95, UNIPHIER_PIN_PULL_DOWN), 310 95, UNIPHIER_PIN_PULL_DOWN),
313 UNIPHIER_PINCTRL_PIN(96, "PORT07", 0, 311 UNIPHIER_PINCTRL_PIN(96, "PORT07", 0,
314 96, UNIPHIER_PIN_DRV_4_8, 312 96, UNIPHIER_PIN_DRV_1BIT,
315 96, UNIPHIER_PIN_PULL_DOWN), 313 96, UNIPHIER_PIN_PULL_DOWN),
316 UNIPHIER_PINCTRL_PIN(97, "PORT10", 0, 314 UNIPHIER_PINCTRL_PIN(97, "PORT10", 0,
317 97, UNIPHIER_PIN_DRV_4_8, 315 97, UNIPHIER_PIN_DRV_1BIT,
318 97, UNIPHIER_PIN_PULL_DOWN), 316 97, UNIPHIER_PIN_PULL_DOWN),
319 UNIPHIER_PINCTRL_PIN(98, "PORT11", 0, 317 UNIPHIER_PINCTRL_PIN(98, "PORT11", 0,
320 98, UNIPHIER_PIN_DRV_4_8, 318 98, UNIPHIER_PIN_DRV_1BIT,
321 98, UNIPHIER_PIN_PULL_DOWN), 319 98, UNIPHIER_PIN_PULL_DOWN),
322 UNIPHIER_PINCTRL_PIN(99, "PORT12", 0, 320 UNIPHIER_PINCTRL_PIN(99, "PORT12", 0,
323 99, UNIPHIER_PIN_DRV_4_8, 321 99, UNIPHIER_PIN_DRV_1BIT,
324 99, UNIPHIER_PIN_PULL_DOWN), 322 99, UNIPHIER_PIN_PULL_DOWN),
325 UNIPHIER_PINCTRL_PIN(100, "PORT13", 0, 323 UNIPHIER_PINCTRL_PIN(100, "PORT13", 0,
326 100, UNIPHIER_PIN_DRV_4_8, 324 100, UNIPHIER_PIN_DRV_1BIT,
327 100, UNIPHIER_PIN_PULL_DOWN), 325 100, UNIPHIER_PIN_PULL_DOWN),
328 UNIPHIER_PINCTRL_PIN(101, "PORT14", 0, 326 UNIPHIER_PINCTRL_PIN(101, "PORT14", 0,
329 101, UNIPHIER_PIN_DRV_4_8, 327 101, UNIPHIER_PIN_DRV_1BIT,
330 101, UNIPHIER_PIN_PULL_DOWN), 328 101, UNIPHIER_PIN_PULL_DOWN),
331 UNIPHIER_PINCTRL_PIN(102, "PORT15", 0, 329 UNIPHIER_PINCTRL_PIN(102, "PORT15", 0,
332 102, UNIPHIER_PIN_DRV_4_8, 330 102, UNIPHIER_PIN_DRV_1BIT,
333 102, UNIPHIER_PIN_PULL_DOWN), 331 102, UNIPHIER_PIN_PULL_DOWN),
334 UNIPHIER_PINCTRL_PIN(103, "PORT16", 0, 332 UNIPHIER_PINCTRL_PIN(103, "PORT16", 0,
335 103, UNIPHIER_PIN_DRV_4_8, 333 103, UNIPHIER_PIN_DRV_1BIT,
336 103, UNIPHIER_PIN_PULL_DOWN), 334 103, UNIPHIER_PIN_PULL_DOWN),
337 UNIPHIER_PINCTRL_PIN(104, "PORT17", 0, 335 UNIPHIER_PINCTRL_PIN(104, "PORT17", 0,
338 104, UNIPHIER_PIN_DRV_4_8, 336 104, UNIPHIER_PIN_DRV_1BIT,
339 104, UNIPHIER_PIN_PULL_DOWN), 337 104, UNIPHIER_PIN_PULL_DOWN),
340 UNIPHIER_PINCTRL_PIN(105, "T0HPD", 0, 338 UNIPHIER_PINCTRL_PIN(105, "T0HPD", 0,
341 105, UNIPHIER_PIN_DRV_4_8, 339 105, UNIPHIER_PIN_DRV_1BIT,
342 105, UNIPHIER_PIN_PULL_DOWN), 340 105, UNIPHIER_PIN_PULL_DOWN),
343 UNIPHIER_PINCTRL_PIN(106, "T1HPD", 0, 341 UNIPHIER_PINCTRL_PIN(106, "T1HPD", 0,
344 106, UNIPHIER_PIN_DRV_4_8, 342 106, UNIPHIER_PIN_DRV_1BIT,
345 106, UNIPHIER_PIN_PULL_DOWN), 343 106, UNIPHIER_PIN_PULL_DOWN),
346 UNIPHIER_PINCTRL_PIN(107, "R0HPD", 0, 344 UNIPHIER_PINCTRL_PIN(107, "R0HPD", 0,
347 107, UNIPHIER_PIN_DRV_4_8, 345 107, UNIPHIER_PIN_DRV_1BIT,
348 107, UNIPHIER_PIN_PULL_DOWN), 346 107, UNIPHIER_PIN_PULL_DOWN),
349 UNIPHIER_PINCTRL_PIN(108, "R1HPD", 0, 347 UNIPHIER_PINCTRL_PIN(108, "R1HPD", 0,
350 108, UNIPHIER_PIN_DRV_4_8, 348 108, UNIPHIER_PIN_DRV_1BIT,
351 108, UNIPHIER_PIN_PULL_DOWN), 349 108, UNIPHIER_PIN_PULL_DOWN),
352 UNIPHIER_PINCTRL_PIN(109, "XPERST", 0, 350 UNIPHIER_PINCTRL_PIN(109, "XPERST", 0,
353 109, UNIPHIER_PIN_DRV_4_8, 351 109, UNIPHIER_PIN_DRV_1BIT,
354 109, UNIPHIER_PIN_PULL_UP), 352 109, UNIPHIER_PIN_PULL_UP),
355 UNIPHIER_PINCTRL_PIN(110, "XPEWAKE", 0, 353 UNIPHIER_PINCTRL_PIN(110, "XPEWAKE", 0,
356 110, UNIPHIER_PIN_DRV_4_8, 354 110, UNIPHIER_PIN_DRV_1BIT,
357 110, UNIPHIER_PIN_PULL_UP), 355 110, UNIPHIER_PIN_PULL_UP),
358 UNIPHIER_PINCTRL_PIN(111, "XPECLKRQ", 0, 356 UNIPHIER_PINCTRL_PIN(111, "XPECLKRQ", 0,
359 111, UNIPHIER_PIN_DRV_4_8, 357 111, UNIPHIER_PIN_DRV_1BIT,
360 111, UNIPHIER_PIN_PULL_UP), 358 111, UNIPHIER_PIN_PULL_UP),
361 UNIPHIER_PINCTRL_PIN(112, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 359 UNIPHIER_PINCTRL_PIN(112, "SDA0", UNIPHIER_PIN_IECTRL_NONE,
362 -1, UNIPHIER_PIN_DRV_FIXED_8, 360 -1, UNIPHIER_PIN_DRV_FIXED8,
363 112, UNIPHIER_PIN_PULL_UP), 361 112, UNIPHIER_PIN_PULL_UP),
364 UNIPHIER_PINCTRL_PIN(113, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 362 UNIPHIER_PINCTRL_PIN(113, "SCL0", UNIPHIER_PIN_IECTRL_NONE,
365 -1, UNIPHIER_PIN_DRV_FIXED_8, 363 -1, UNIPHIER_PIN_DRV_FIXED8,
366 113, UNIPHIER_PIN_PULL_UP), 364 113, UNIPHIER_PIN_PULL_UP),
367 UNIPHIER_PINCTRL_PIN(114, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 365 UNIPHIER_PINCTRL_PIN(114, "SDA1", UNIPHIER_PIN_IECTRL_NONE,
368 -1, UNIPHIER_PIN_DRV_FIXED_8, 366 -1, UNIPHIER_PIN_DRV_FIXED8,
369 114, UNIPHIER_PIN_PULL_UP), 367 114, UNIPHIER_PIN_PULL_UP),
370 UNIPHIER_PINCTRL_PIN(115, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 368 UNIPHIER_PINCTRL_PIN(115, "SCL1", UNIPHIER_PIN_IECTRL_NONE,
371 -1, UNIPHIER_PIN_DRV_FIXED_8, 369 -1, UNIPHIER_PIN_DRV_FIXED8,
372 115, UNIPHIER_PIN_PULL_UP), 370 115, UNIPHIER_PIN_PULL_UP),
373 UNIPHIER_PINCTRL_PIN(116, "SDA2", UNIPHIER_PIN_IECTRL_NONE, 371 UNIPHIER_PINCTRL_PIN(116, "SDA2", UNIPHIER_PIN_IECTRL_NONE,
374 -1, UNIPHIER_PIN_DRV_FIXED_8, 372 -1, UNIPHIER_PIN_DRV_FIXED8,
375 116, UNIPHIER_PIN_PULL_UP), 373 116, UNIPHIER_PIN_PULL_UP),
376 UNIPHIER_PINCTRL_PIN(117, "SCL2", UNIPHIER_PIN_IECTRL_NONE, 374 UNIPHIER_PINCTRL_PIN(117, "SCL2", UNIPHIER_PIN_IECTRL_NONE,
377 -1, UNIPHIER_PIN_DRV_FIXED_8, 375 -1, UNIPHIER_PIN_DRV_FIXED8,
378 117, UNIPHIER_PIN_PULL_UP), 376 117, UNIPHIER_PIN_PULL_UP),
379 UNIPHIER_PINCTRL_PIN(118, "SDA3", UNIPHIER_PIN_IECTRL_NONE, 377 UNIPHIER_PINCTRL_PIN(118, "SDA3", UNIPHIER_PIN_IECTRL_NONE,
380 -1, UNIPHIER_PIN_DRV_FIXED_4, 378 -1, UNIPHIER_PIN_DRV_FIXED4,
381 118, UNIPHIER_PIN_PULL_UP), 379 118, UNIPHIER_PIN_PULL_UP),
382 UNIPHIER_PINCTRL_PIN(119, "SCL3", UNIPHIER_PIN_IECTRL_NONE, 380 UNIPHIER_PINCTRL_PIN(119, "SCL3", UNIPHIER_PIN_IECTRL_NONE,
383 -1, UNIPHIER_PIN_DRV_FIXED_4, 381 -1, UNIPHIER_PIN_DRV_FIXED4,
384 119, UNIPHIER_PIN_PULL_UP), 382 119, UNIPHIER_PIN_PULL_UP),
385 UNIPHIER_PINCTRL_PIN(120, "SPISYNC", UNIPHIER_PIN_IECTRL_NONE, 383 UNIPHIER_PINCTRL_PIN(120, "SPISYNC", UNIPHIER_PIN_IECTRL_NONE,
386 -1, UNIPHIER_PIN_DRV_FIXED_8, 384 -1, UNIPHIER_PIN_DRV_FIXED8,
387 120, UNIPHIER_PIN_PULL_DOWN), 385 120, UNIPHIER_PIN_PULL_DOWN),
388 UNIPHIER_PINCTRL_PIN(121, "SPISCLK", UNIPHIER_PIN_IECTRL_NONE, 386 UNIPHIER_PINCTRL_PIN(121, "SPISCLK", UNIPHIER_PIN_IECTRL_NONE,
389 -1, UNIPHIER_PIN_DRV_FIXED_8, 387 -1, UNIPHIER_PIN_DRV_FIXED8,
390 121, UNIPHIER_PIN_PULL_DOWN), 388 121, UNIPHIER_PIN_PULL_DOWN),
391 UNIPHIER_PINCTRL_PIN(122, "SPITXD", UNIPHIER_PIN_IECTRL_NONE, 389 UNIPHIER_PINCTRL_PIN(122, "SPITXD", UNIPHIER_PIN_IECTRL_NONE,
392 -1, UNIPHIER_PIN_DRV_FIXED_8, 390 -1, UNIPHIER_PIN_DRV_FIXED8,
393 122, UNIPHIER_PIN_PULL_DOWN), 391 122, UNIPHIER_PIN_PULL_DOWN),
394 UNIPHIER_PINCTRL_PIN(123, "SPIRXD", UNIPHIER_PIN_IECTRL_NONE, 392 UNIPHIER_PINCTRL_PIN(123, "SPIRXD", UNIPHIER_PIN_IECTRL_NONE,
395 -1, UNIPHIER_PIN_DRV_FIXED_8, 393 -1, UNIPHIER_PIN_DRV_FIXED8,
396 123, UNIPHIER_PIN_PULL_DOWN), 394 123, UNIPHIER_PIN_PULL_DOWN),
397 UNIPHIER_PINCTRL_PIN(124, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 395 UNIPHIER_PINCTRL_PIN(124, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE,
398 -1, UNIPHIER_PIN_DRV_FIXED_8, 396 -1, UNIPHIER_PIN_DRV_FIXED8,
399 124, UNIPHIER_PIN_PULL_DOWN), 397 124, UNIPHIER_PIN_PULL_DOWN),
400 UNIPHIER_PINCTRL_PIN(125, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 398 UNIPHIER_PINCTRL_PIN(125, "USB0OD", UNIPHIER_PIN_IECTRL_NONE,
401 -1, UNIPHIER_PIN_DRV_FIXED_8, 399 -1, UNIPHIER_PIN_DRV_FIXED8,
402 125, UNIPHIER_PIN_PULL_UP), 400 125, UNIPHIER_PIN_PULL_UP),
403 UNIPHIER_PINCTRL_PIN(126, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 401 UNIPHIER_PINCTRL_PIN(126, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE,
404 -1, UNIPHIER_PIN_DRV_FIXED_8, 402 -1, UNIPHIER_PIN_DRV_FIXED8,
405 126, UNIPHIER_PIN_PULL_DOWN), 403 126, UNIPHIER_PIN_PULL_DOWN),
406 UNIPHIER_PINCTRL_PIN(127, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 404 UNIPHIER_PINCTRL_PIN(127, "USB1OD", UNIPHIER_PIN_IECTRL_NONE,
407 -1, UNIPHIER_PIN_DRV_FIXED_8, 405 -1, UNIPHIER_PIN_DRV_FIXED8,
408 127, UNIPHIER_PIN_PULL_UP), 406 127, UNIPHIER_PIN_PULL_UP),
409 UNIPHIER_PINCTRL_PIN(128, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 407 UNIPHIER_PINCTRL_PIN(128, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE,
410 -1, UNIPHIER_PIN_DRV_FIXED_8, 408 -1, UNIPHIER_PIN_DRV_FIXED8,
411 128, UNIPHIER_PIN_PULL_DOWN), 409 128, UNIPHIER_PIN_PULL_DOWN),
412 UNIPHIER_PINCTRL_PIN(129, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 410 UNIPHIER_PINCTRL_PIN(129, "USB2OD", UNIPHIER_PIN_IECTRL_NONE,
413 -1, UNIPHIER_PIN_DRV_FIXED_8, 411 -1, UNIPHIER_PIN_DRV_FIXED8,
414 129, UNIPHIER_PIN_PULL_UP), 412 129, UNIPHIER_PIN_PULL_UP),
415 UNIPHIER_PINCTRL_PIN(130, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE, 413 UNIPHIER_PINCTRL_PIN(130, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE,
416 -1, UNIPHIER_PIN_DRV_FIXED_8, 414 -1, UNIPHIER_PIN_DRV_FIXED8,
417 130, UNIPHIER_PIN_PULL_DOWN), 415 130, UNIPHIER_PIN_PULL_DOWN),
418 UNIPHIER_PINCTRL_PIN(131, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE, 416 UNIPHIER_PINCTRL_PIN(131, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE,
419 -1, UNIPHIER_PIN_DRV_FIXED_8, 417 -1, UNIPHIER_PIN_DRV_FIXED8,
420 131, UNIPHIER_PIN_PULL_DOWN), 418 131, UNIPHIER_PIN_PULL_DOWN),
421 UNIPHIER_PINCTRL_PIN(132, "SMTD0", UNIPHIER_PIN_IECTRL_NONE, 419 UNIPHIER_PINCTRL_PIN(132, "SMTD0", UNIPHIER_PIN_IECTRL_NONE,
422 -1, UNIPHIER_PIN_DRV_FIXED_8, 420 -1, UNIPHIER_PIN_DRV_FIXED8,
423 132, UNIPHIER_PIN_PULL_DOWN), 421 132, UNIPHIER_PIN_PULL_DOWN),
424 UNIPHIER_PINCTRL_PIN(133, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE, 422 UNIPHIER_PINCTRL_PIN(133, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE,
425 -1, UNIPHIER_PIN_DRV_FIXED_8, 423 -1, UNIPHIER_PIN_DRV_FIXED8,
426 133, UNIPHIER_PIN_PULL_DOWN), 424 133, UNIPHIER_PIN_PULL_DOWN),
427 UNIPHIER_PINCTRL_PIN(134, "SMTCLK0", UNIPHIER_PIN_IECTRL_NONE, 425 UNIPHIER_PINCTRL_PIN(134, "SMTCLK0", UNIPHIER_PIN_IECTRL_NONE,
428 -1, UNIPHIER_PIN_DRV_FIXED_8, 426 -1, UNIPHIER_PIN_DRV_FIXED8,
429 134, UNIPHIER_PIN_PULL_DOWN), 427 134, UNIPHIER_PIN_PULL_DOWN),
430 UNIPHIER_PINCTRL_PIN(135, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE, 428 UNIPHIER_PINCTRL_PIN(135, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE,
431 -1, UNIPHIER_PIN_DRV_FIXED_8, 429 -1, UNIPHIER_PIN_DRV_FIXED8,
432 135, UNIPHIER_PIN_PULL_DOWN), 430 135, UNIPHIER_PIN_PULL_DOWN),
433 UNIPHIER_PINCTRL_PIN(136, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE, 431 UNIPHIER_PINCTRL_PIN(136, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE,
434 -1, UNIPHIER_PIN_DRV_FIXED_8, 432 -1, UNIPHIER_PIN_DRV_FIXED8,
435 136, UNIPHIER_PIN_PULL_DOWN), 433 136, UNIPHIER_PIN_PULL_DOWN),
436 UNIPHIER_PINCTRL_PIN(137, "SMTD1", UNIPHIER_PIN_IECTRL_NONE, 434 UNIPHIER_PINCTRL_PIN(137, "SMTD1", UNIPHIER_PIN_IECTRL_NONE,
437 -1, UNIPHIER_PIN_DRV_FIXED_8, 435 -1, UNIPHIER_PIN_DRV_FIXED8,
438 137, UNIPHIER_PIN_PULL_DOWN), 436 137, UNIPHIER_PIN_PULL_DOWN),
439 UNIPHIER_PINCTRL_PIN(138, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE, 437 UNIPHIER_PINCTRL_PIN(138, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE,
440 -1, UNIPHIER_PIN_DRV_FIXED_8, 438 -1, UNIPHIER_PIN_DRV_FIXED8,
441 138, UNIPHIER_PIN_PULL_DOWN), 439 138, UNIPHIER_PIN_PULL_DOWN),
442 UNIPHIER_PINCTRL_PIN(139, "SMTCLK1", UNIPHIER_PIN_IECTRL_NONE, 440 UNIPHIER_PINCTRL_PIN(139, "SMTCLK1", UNIPHIER_PIN_IECTRL_NONE,
443 -1, UNIPHIER_PIN_DRV_FIXED_8, 441 -1, UNIPHIER_PIN_DRV_FIXED8,
444 139, UNIPHIER_PIN_PULL_DOWN), 442 139, UNIPHIER_PIN_PULL_DOWN),
445 UNIPHIER_PINCTRL_PIN(140, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE, 443 UNIPHIER_PINCTRL_PIN(140, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE,
446 -1, UNIPHIER_PIN_DRV_FIXED_8, 444 -1, UNIPHIER_PIN_DRV_FIXED8,
447 140, UNIPHIER_PIN_PULL_DOWN), 445 140, UNIPHIER_PIN_PULL_DOWN),
448 UNIPHIER_PINCTRL_PIN(141, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE, 446 UNIPHIER_PINCTRL_PIN(141, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE,
449 -1, UNIPHIER_PIN_DRV_FIXED_8, 447 -1, UNIPHIER_PIN_DRV_FIXED8,
450 141, UNIPHIER_PIN_PULL_DOWN), 448 141, UNIPHIER_PIN_PULL_DOWN),
451 UNIPHIER_PINCTRL_PIN(142, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE, 449 UNIPHIER_PINCTRL_PIN(142, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE,
452 -1, UNIPHIER_PIN_DRV_FIXED_8, 450 -1, UNIPHIER_PIN_DRV_FIXED8,
453 142, UNIPHIER_PIN_PULL_DOWN), 451 142, UNIPHIER_PIN_PULL_DOWN),
454 UNIPHIER_PINCTRL_PIN(143, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE, 452 UNIPHIER_PINCTRL_PIN(143, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE,
455 -1, UNIPHIER_PIN_DRV_FIXED_8, 453 -1, UNIPHIER_PIN_DRV_FIXED8,
456 143, UNIPHIER_PIN_PULL_DOWN), 454 143, UNIPHIER_PIN_PULL_DOWN),
457 UNIPHIER_PINCTRL_PIN(144, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE, 455 UNIPHIER_PINCTRL_PIN(144, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE,
458 -1, UNIPHIER_PIN_DRV_FIXED_8, 456 -1, UNIPHIER_PIN_DRV_FIXED8,
459 144, UNIPHIER_PIN_PULL_DOWN), 457 144, UNIPHIER_PIN_PULL_DOWN),
460 UNIPHIER_PINCTRL_PIN(145, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE, 458 UNIPHIER_PINCTRL_PIN(145, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE,
461 -1, UNIPHIER_PIN_DRV_FIXED_8, 459 -1, UNIPHIER_PIN_DRV_FIXED8,
462 145, UNIPHIER_PIN_PULL_DOWN), 460 145, UNIPHIER_PIN_PULL_DOWN),
463 UNIPHIER_PINCTRL_PIN(146, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE, 461 UNIPHIER_PINCTRL_PIN(146, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE,
464 -1, UNIPHIER_PIN_DRV_FIXED_8, 462 -1, UNIPHIER_PIN_DRV_FIXED8,
465 146, UNIPHIER_PIN_PULL_DOWN), 463 146, UNIPHIER_PIN_PULL_DOWN),
466 UNIPHIER_PINCTRL_PIN(147, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE, 464 UNIPHIER_PINCTRL_PIN(147, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE,
467 -1, UNIPHIER_PIN_DRV_FIXED_8, 465 -1, UNIPHIER_PIN_DRV_FIXED8,
468 147, UNIPHIER_PIN_PULL_DOWN), 466 147, UNIPHIER_PIN_PULL_DOWN),
469 UNIPHIER_PINCTRL_PIN(148, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE, 467 UNIPHIER_PINCTRL_PIN(148, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE,
470 -1, UNIPHIER_PIN_DRV_FIXED_8, 468 -1, UNIPHIER_PIN_DRV_FIXED8,
471 148, UNIPHIER_PIN_PULL_DOWN), 469 148, UNIPHIER_PIN_PULL_DOWN),
472 UNIPHIER_PINCTRL_PIN(149, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE, 470 UNIPHIER_PINCTRL_PIN(149, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE,
473 -1, UNIPHIER_PIN_DRV_FIXED_8, 471 -1, UNIPHIER_PIN_DRV_FIXED8,
474 149, UNIPHIER_PIN_PULL_DOWN), 472 149, UNIPHIER_PIN_PULL_DOWN),
475 UNIPHIER_PINCTRL_PIN(150, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE, 473 UNIPHIER_PINCTRL_PIN(150, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE,
476 -1, UNIPHIER_PIN_DRV_FIXED_8, 474 -1, UNIPHIER_PIN_DRV_FIXED8,
477 150, UNIPHIER_PIN_PULL_DOWN), 475 150, UNIPHIER_PIN_PULL_DOWN),
478 UNIPHIER_PINCTRL_PIN(151, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE, 476 UNIPHIER_PINCTRL_PIN(151, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE,
479 -1, UNIPHIER_PIN_DRV_FIXED_8, 477 -1, UNIPHIER_PIN_DRV_FIXED8,
480 151, UNIPHIER_PIN_PULL_DOWN), 478 151, UNIPHIER_PIN_PULL_DOWN),
481 UNIPHIER_PINCTRL_PIN(152, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE, 479 UNIPHIER_PINCTRL_PIN(152, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE,
482 -1, UNIPHIER_PIN_DRV_FIXED_8, 480 -1, UNIPHIER_PIN_DRV_FIXED8,
483 152, UNIPHIER_PIN_PULL_DOWN), 481 152, UNIPHIER_PIN_PULL_DOWN),
484 UNIPHIER_PINCTRL_PIN(153, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE, 482 UNIPHIER_PINCTRL_PIN(153, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE,
485 -1, UNIPHIER_PIN_DRV_FIXED_8, 483 -1, UNIPHIER_PIN_DRV_FIXED8,
486 153, UNIPHIER_PIN_PULL_DOWN), 484 153, UNIPHIER_PIN_PULL_DOWN),
487 UNIPHIER_PINCTRL_PIN(154, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE, 485 UNIPHIER_PINCTRL_PIN(154, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE,
488 -1, UNIPHIER_PIN_DRV_FIXED_8, 486 -1, UNIPHIER_PIN_DRV_FIXED8,
489 154, UNIPHIER_PIN_PULL_DOWN), 487 154, UNIPHIER_PIN_PULL_DOWN),
490 UNIPHIER_PINCTRL_PIN(155, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE, 488 UNIPHIER_PINCTRL_PIN(155, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE,
491 -1, UNIPHIER_PIN_DRV_FIXED_8, 489 -1, UNIPHIER_PIN_DRV_FIXED8,
492 155, UNIPHIER_PIN_PULL_DOWN), 490 155, UNIPHIER_PIN_PULL_DOWN),
493 UNIPHIER_PINCTRL_PIN(156, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE, 491 UNIPHIER_PINCTRL_PIN(156, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE,
494 -1, UNIPHIER_PIN_DRV_FIXED_8, 492 -1, UNIPHIER_PIN_DRV_FIXED8,
495 156, UNIPHIER_PIN_PULL_DOWN), 493 156, UNIPHIER_PIN_PULL_DOWN),
496 UNIPHIER_PINCTRL_PIN(157, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE, 494 UNIPHIER_PINCTRL_PIN(157, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE,
497 -1, UNIPHIER_PIN_DRV_FIXED_8, 495 -1, UNIPHIER_PIN_DRV_FIXED8,
498 157, UNIPHIER_PIN_PULL_DOWN), 496 157, UNIPHIER_PIN_PULL_DOWN),
499 UNIPHIER_PINCTRL_PIN(158, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE, 497 UNIPHIER_PINCTRL_PIN(158, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE,
500 -1, UNIPHIER_PIN_DRV_FIXED_8, 498 -1, UNIPHIER_PIN_DRV_FIXED8,
501 158, UNIPHIER_PIN_PULL_DOWN), 499 158, UNIPHIER_PIN_PULL_DOWN),
502 UNIPHIER_PINCTRL_PIN(159, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE, 500 UNIPHIER_PINCTRL_PIN(159, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE,
503 -1, UNIPHIER_PIN_DRV_FIXED_8, 501 -1, UNIPHIER_PIN_DRV_FIXED8,
504 159, UNIPHIER_PIN_PULL_DOWN), 502 159, UNIPHIER_PIN_PULL_DOWN),
505 UNIPHIER_PINCTRL_PIN(160, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE, 503 UNIPHIER_PINCTRL_PIN(160, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE,
506 -1, UNIPHIER_PIN_DRV_FIXED_8, 504 -1, UNIPHIER_PIN_DRV_FIXED8,
507 160, UNIPHIER_PIN_PULL_DOWN), 505 160, UNIPHIER_PIN_PULL_DOWN),
508 UNIPHIER_PINCTRL_PIN(161, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE, 506 UNIPHIER_PINCTRL_PIN(161, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE,
509 -1, UNIPHIER_PIN_DRV_FIXED_8, 507 -1, UNIPHIER_PIN_DRV_FIXED8,
510 161, UNIPHIER_PIN_PULL_DOWN), 508 161, UNIPHIER_PIN_PULL_DOWN),
511 UNIPHIER_PINCTRL_PIN(162, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE, 509 UNIPHIER_PINCTRL_PIN(162, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE,
512 -1, UNIPHIER_PIN_DRV_FIXED_8, 510 -1, UNIPHIER_PIN_DRV_FIXED8,
513 162, UNIPHIER_PIN_PULL_DOWN), 511 162, UNIPHIER_PIN_PULL_DOWN),
514 UNIPHIER_PINCTRL_PIN(163, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE, 512 UNIPHIER_PINCTRL_PIN(163, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE,
515 -1, UNIPHIER_PIN_DRV_FIXED_8, 513 -1, UNIPHIER_PIN_DRV_FIXED8,
516 163, UNIPHIER_PIN_PULL_DOWN), 514 163, UNIPHIER_PIN_PULL_DOWN),
517 UNIPHIER_PINCTRL_PIN(164, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE, 515 UNIPHIER_PINCTRL_PIN(164, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE,
518 -1, UNIPHIER_PIN_DRV_FIXED_8, 516 -1, UNIPHIER_PIN_DRV_FIXED8,
519 164, UNIPHIER_PIN_PULL_DOWN), 517 164, UNIPHIER_PIN_PULL_DOWN),
520 UNIPHIER_PINCTRL_PIN(165, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE, 518 UNIPHIER_PINCTRL_PIN(165, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE,
521 -1, UNIPHIER_PIN_DRV_FIXED_8, 519 -1, UNIPHIER_PIN_DRV_FIXED8,
522 165, UNIPHIER_PIN_PULL_DOWN), 520 165, UNIPHIER_PIN_PULL_DOWN),
523 UNIPHIER_PINCTRL_PIN(166, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE, 521 UNIPHIER_PINCTRL_PIN(166, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE,
524 -1, UNIPHIER_PIN_DRV_FIXED_8, 522 -1, UNIPHIER_PIN_DRV_FIXED8,
525 166, UNIPHIER_PIN_PULL_DOWN), 523 166, UNIPHIER_PIN_PULL_DOWN),
526 UNIPHIER_PINCTRL_PIN(167, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE, 524 UNIPHIER_PINCTRL_PIN(167, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE,
527 -1, UNIPHIER_PIN_DRV_FIXED_8, 525 -1, UNIPHIER_PIN_DRV_FIXED8,
528 167, UNIPHIER_PIN_PULL_DOWN), 526 167, UNIPHIER_PIN_PULL_DOWN),
529 UNIPHIER_PINCTRL_PIN(168, "CH7CLK", UNIPHIER_PIN_IECTRL_NONE, 527 UNIPHIER_PINCTRL_PIN(168, "CH7CLK", UNIPHIER_PIN_IECTRL_NONE,
530 -1, UNIPHIER_PIN_DRV_FIXED_8, 528 -1, UNIPHIER_PIN_DRV_FIXED8,
531 168, UNIPHIER_PIN_PULL_DOWN), 529 168, UNIPHIER_PIN_PULL_DOWN),
532 UNIPHIER_PINCTRL_PIN(169, "CH7PSYNC", UNIPHIER_PIN_IECTRL_NONE, 530 UNIPHIER_PINCTRL_PIN(169, "CH7PSYNC", UNIPHIER_PIN_IECTRL_NONE,
533 -1, UNIPHIER_PIN_DRV_FIXED_8, 531 -1, UNIPHIER_PIN_DRV_FIXED8,
534 169, UNIPHIER_PIN_PULL_DOWN), 532 169, UNIPHIER_PIN_PULL_DOWN),
535 UNIPHIER_PINCTRL_PIN(170, "CH7VAL", UNIPHIER_PIN_IECTRL_NONE, 533 UNIPHIER_PINCTRL_PIN(170, "CH7VAL", UNIPHIER_PIN_IECTRL_NONE,
536 -1, UNIPHIER_PIN_DRV_FIXED_8, 534 -1, UNIPHIER_PIN_DRV_FIXED8,
537 170, UNIPHIER_PIN_PULL_DOWN), 535 170, UNIPHIER_PIN_PULL_DOWN),
538 UNIPHIER_PINCTRL_PIN(171, "CH7DATA", UNIPHIER_PIN_IECTRL_NONE, 536 UNIPHIER_PINCTRL_PIN(171, "CH7DATA", UNIPHIER_PIN_IECTRL_NONE,
539 -1, UNIPHIER_PIN_DRV_FIXED_8, 537 -1, UNIPHIER_PIN_DRV_FIXED8,
540 171, UNIPHIER_PIN_PULL_DOWN), 538 171, UNIPHIER_PIN_PULL_DOWN),
541 UNIPHIER_PINCTRL_PIN(172, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE, 539 UNIPHIER_PINCTRL_PIN(172, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE,
542 -1, UNIPHIER_PIN_DRV_FIXED_8, 540 -1, UNIPHIER_PIN_DRV_FIXED8,
543 172, UNIPHIER_PIN_PULL_DOWN), 541 172, UNIPHIER_PIN_PULL_DOWN),
544 UNIPHIER_PINCTRL_PIN(173, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE, 542 UNIPHIER_PINCTRL_PIN(173, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE,
545 -1, UNIPHIER_PIN_DRV_FIXED_8, 543 -1, UNIPHIER_PIN_DRV_FIXED8,
546 173, UNIPHIER_PIN_PULL_DOWN), 544 173, UNIPHIER_PIN_PULL_DOWN),
547 UNIPHIER_PINCTRL_PIN(174, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE, 545 UNIPHIER_PINCTRL_PIN(174, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE,
548 -1, UNIPHIER_PIN_DRV_FIXED_8, 546 -1, UNIPHIER_PIN_DRV_FIXED8,
549 174, UNIPHIER_PIN_PULL_DOWN), 547 174, UNIPHIER_PIN_PULL_DOWN),
550 UNIPHIER_PINCTRL_PIN(175, "AI1D0", UNIPHIER_PIN_IECTRL_NONE, 548 UNIPHIER_PINCTRL_PIN(175, "AI1D0", UNIPHIER_PIN_IECTRL_NONE,
551 -1, UNIPHIER_PIN_DRV_FIXED_8, 549 -1, UNIPHIER_PIN_DRV_FIXED8,
552 175, UNIPHIER_PIN_PULL_DOWN), 550 175, UNIPHIER_PIN_PULL_DOWN),
553 UNIPHIER_PINCTRL_PIN(176, "AI1D1", UNIPHIER_PIN_IECTRL_NONE, 551 UNIPHIER_PINCTRL_PIN(176, "AI1D1", UNIPHIER_PIN_IECTRL_NONE,
554 -1, UNIPHIER_PIN_DRV_FIXED_8, 552 -1, UNIPHIER_PIN_DRV_FIXED8,
555 176, UNIPHIER_PIN_PULL_DOWN), 553 176, UNIPHIER_PIN_PULL_DOWN),
556 UNIPHIER_PINCTRL_PIN(177, "AI1D2", UNIPHIER_PIN_IECTRL_NONE, 554 UNIPHIER_PINCTRL_PIN(177, "AI1D2", UNIPHIER_PIN_IECTRL_NONE,
557 -1, UNIPHIER_PIN_DRV_FIXED_8, 555 -1, UNIPHIER_PIN_DRV_FIXED8,
558 177, UNIPHIER_PIN_PULL_DOWN), 556 177, UNIPHIER_PIN_PULL_DOWN),
559 UNIPHIER_PINCTRL_PIN(178, "AI1D3", UNIPHIER_PIN_IECTRL_NONE, 557 UNIPHIER_PINCTRL_PIN(178, "AI1D3", UNIPHIER_PIN_IECTRL_NONE,
560 -1, UNIPHIER_PIN_DRV_FIXED_8, 558 -1, UNIPHIER_PIN_DRV_FIXED8,
561 178, UNIPHIER_PIN_PULL_DOWN), 559 178, UNIPHIER_PIN_PULL_DOWN),
562 UNIPHIER_PINCTRL_PIN(179, "AI2ADCCK", UNIPHIER_PIN_IECTRL_NONE, 560 UNIPHIER_PINCTRL_PIN(179, "AI2ADCCK", UNIPHIER_PIN_IECTRL_NONE,
563 -1, UNIPHIER_PIN_DRV_FIXED_8, 561 -1, UNIPHIER_PIN_DRV_FIXED8,
564 179, UNIPHIER_PIN_PULL_DOWN), 562 179, UNIPHIER_PIN_PULL_DOWN),
565 UNIPHIER_PINCTRL_PIN(180, "AI2BCK", UNIPHIER_PIN_IECTRL_NONE, 563 UNIPHIER_PINCTRL_PIN(180, "AI2BCK", UNIPHIER_PIN_IECTRL_NONE,
566 -1, UNIPHIER_PIN_DRV_FIXED_8, 564 -1, UNIPHIER_PIN_DRV_FIXED8,
567 180, UNIPHIER_PIN_PULL_DOWN), 565 180, UNIPHIER_PIN_PULL_DOWN),
568 UNIPHIER_PINCTRL_PIN(181, "AI2LRCK", UNIPHIER_PIN_IECTRL_NONE, 566 UNIPHIER_PINCTRL_PIN(181, "AI2LRCK", UNIPHIER_PIN_IECTRL_NONE,
569 -1, UNIPHIER_PIN_DRV_FIXED_8, 567 -1, UNIPHIER_PIN_DRV_FIXED8,
570 181, UNIPHIER_PIN_PULL_DOWN), 568 181, UNIPHIER_PIN_PULL_DOWN),
571 UNIPHIER_PINCTRL_PIN(182, "AI2D0", UNIPHIER_PIN_IECTRL_NONE, 569 UNIPHIER_PINCTRL_PIN(182, "AI2D0", UNIPHIER_PIN_IECTRL_NONE,
572 -1, UNIPHIER_PIN_DRV_FIXED_8, 570 -1, UNIPHIER_PIN_DRV_FIXED8,
573 182, UNIPHIER_PIN_PULL_DOWN), 571 182, UNIPHIER_PIN_PULL_DOWN),
574 UNIPHIER_PINCTRL_PIN(183, "AI2D1", UNIPHIER_PIN_IECTRL_NONE, 572 UNIPHIER_PINCTRL_PIN(183, "AI2D1", UNIPHIER_PIN_IECTRL_NONE,
575 -1, UNIPHIER_PIN_DRV_FIXED_8, 573 -1, UNIPHIER_PIN_DRV_FIXED8,
576 183, UNIPHIER_PIN_PULL_DOWN), 574 183, UNIPHIER_PIN_PULL_DOWN),
577 UNIPHIER_PINCTRL_PIN(184, "AI2D2", UNIPHIER_PIN_IECTRL_NONE, 575 UNIPHIER_PINCTRL_PIN(184, "AI2D2", UNIPHIER_PIN_IECTRL_NONE,
578 -1, UNIPHIER_PIN_DRV_FIXED_8, 576 -1, UNIPHIER_PIN_DRV_FIXED8,
579 184, UNIPHIER_PIN_PULL_DOWN), 577 184, UNIPHIER_PIN_PULL_DOWN),
580 UNIPHIER_PINCTRL_PIN(185, "AI2D3", UNIPHIER_PIN_IECTRL_NONE, 578 UNIPHIER_PINCTRL_PIN(185, "AI2D3", UNIPHIER_PIN_IECTRL_NONE,
581 -1, UNIPHIER_PIN_DRV_FIXED_8, 579 -1, UNIPHIER_PIN_DRV_FIXED8,
582 185, UNIPHIER_PIN_PULL_DOWN), 580 185, UNIPHIER_PIN_PULL_DOWN),
583 UNIPHIER_PINCTRL_PIN(186, "AI3ADCCK", UNIPHIER_PIN_IECTRL_NONE, 581 UNIPHIER_PINCTRL_PIN(186, "AI3ADCCK", UNIPHIER_PIN_IECTRL_NONE,
584 -1, UNIPHIER_PIN_DRV_FIXED_8, 582 -1, UNIPHIER_PIN_DRV_FIXED8,
585 186, UNIPHIER_PIN_PULL_DOWN), 583 186, UNIPHIER_PIN_PULL_DOWN),
586 UNIPHIER_PINCTRL_PIN(187, "AI3BCK", UNIPHIER_PIN_IECTRL_NONE, 584 UNIPHIER_PINCTRL_PIN(187, "AI3BCK", UNIPHIER_PIN_IECTRL_NONE,
587 -1, UNIPHIER_PIN_DRV_FIXED_8, 585 -1, UNIPHIER_PIN_DRV_FIXED8,
588 187, UNIPHIER_PIN_PULL_DOWN), 586 187, UNIPHIER_PIN_PULL_DOWN),
589 UNIPHIER_PINCTRL_PIN(188, "AI3LRCK", UNIPHIER_PIN_IECTRL_NONE, 587 UNIPHIER_PINCTRL_PIN(188, "AI3LRCK", UNIPHIER_PIN_IECTRL_NONE,
590 -1, UNIPHIER_PIN_DRV_FIXED_8, 588 -1, UNIPHIER_PIN_DRV_FIXED8,
591 188, UNIPHIER_PIN_PULL_DOWN), 589 188, UNIPHIER_PIN_PULL_DOWN),
592 UNIPHIER_PINCTRL_PIN(189, "AI3D0", UNIPHIER_PIN_IECTRL_NONE, 590 UNIPHIER_PINCTRL_PIN(189, "AI3D0", UNIPHIER_PIN_IECTRL_NONE,
593 -1, UNIPHIER_PIN_DRV_FIXED_8, 591 -1, UNIPHIER_PIN_DRV_FIXED8,
594 189, UNIPHIER_PIN_PULL_DOWN), 592 189, UNIPHIER_PIN_PULL_DOWN),
595 UNIPHIER_PINCTRL_PIN(190, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE, 593 UNIPHIER_PINCTRL_PIN(190, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE,
596 -1, UNIPHIER_PIN_DRV_FIXED_8, 594 -1, UNIPHIER_PIN_DRV_FIXED8,
597 190, UNIPHIER_PIN_PULL_DOWN), 595 190, UNIPHIER_PIN_PULL_DOWN),
598 UNIPHIER_PINCTRL_PIN(191, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE, 596 UNIPHIER_PINCTRL_PIN(191, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE,
599 -1, UNIPHIER_PIN_DRV_FIXED_8, 597 -1, UNIPHIER_PIN_DRV_FIXED8,
600 191, UNIPHIER_PIN_PULL_DOWN), 598 191, UNIPHIER_PIN_PULL_DOWN),
601 UNIPHIER_PINCTRL_PIN(192, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE, 599 UNIPHIER_PINCTRL_PIN(192, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE,
602 -1, UNIPHIER_PIN_DRV_FIXED_8, 600 -1, UNIPHIER_PIN_DRV_FIXED8,
603 192, UNIPHIER_PIN_PULL_DOWN), 601 192, UNIPHIER_PIN_PULL_DOWN),
604 UNIPHIER_PINCTRL_PIN(193, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE, 602 UNIPHIER_PINCTRL_PIN(193, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE,
605 -1, UNIPHIER_PIN_DRV_FIXED_8, 603 -1, UNIPHIER_PIN_DRV_FIXED8,
606 193, UNIPHIER_PIN_PULL_DOWN), 604 193, UNIPHIER_PIN_PULL_DOWN),
607 UNIPHIER_PINCTRL_PIN(194, "AO1D0", UNIPHIER_PIN_IECTRL_NONE, 605 UNIPHIER_PINCTRL_PIN(194, "AO1D0", UNIPHIER_PIN_IECTRL_NONE,
608 -1, UNIPHIER_PIN_DRV_FIXED_8, 606 -1, UNIPHIER_PIN_DRV_FIXED8,
609 194, UNIPHIER_PIN_PULL_DOWN), 607 194, UNIPHIER_PIN_PULL_DOWN),
610 UNIPHIER_PINCTRL_PIN(195, "AO1D1", UNIPHIER_PIN_IECTRL_NONE, 608 UNIPHIER_PINCTRL_PIN(195, "AO1D1", UNIPHIER_PIN_IECTRL_NONE,
611 -1, UNIPHIER_PIN_DRV_FIXED_8, 609 -1, UNIPHIER_PIN_DRV_FIXED8,
612 195, UNIPHIER_PIN_PULL_DOWN), 610 195, UNIPHIER_PIN_PULL_DOWN),
613 UNIPHIER_PINCTRL_PIN(196, "AO1D2", UNIPHIER_PIN_IECTRL_NONE, 611 UNIPHIER_PINCTRL_PIN(196, "AO1D2", UNIPHIER_PIN_IECTRL_NONE,
614 -1, UNIPHIER_PIN_DRV_FIXED_8, 612 -1, UNIPHIER_PIN_DRV_FIXED8,
615 196, UNIPHIER_PIN_PULL_UP), 613 196, UNIPHIER_PIN_PULL_UP),
616 UNIPHIER_PINCTRL_PIN(197, "AO1D3", UNIPHIER_PIN_IECTRL_NONE, 614 UNIPHIER_PINCTRL_PIN(197, "AO1D3", UNIPHIER_PIN_IECTRL_NONE,
617 -1, UNIPHIER_PIN_DRV_FIXED_8, 615 -1, UNIPHIER_PIN_DRV_FIXED8,
618 197, UNIPHIER_PIN_PULL_UP), 616 197, UNIPHIER_PIN_PULL_UP),
619 UNIPHIER_PINCTRL_PIN(198, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE, 617 UNIPHIER_PINCTRL_PIN(198, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE,
620 -1, UNIPHIER_PIN_DRV_FIXED_8, 618 -1, UNIPHIER_PIN_DRV_FIXED8,
621 198, UNIPHIER_PIN_PULL_DOWN), 619 198, UNIPHIER_PIN_PULL_DOWN),
622 UNIPHIER_PINCTRL_PIN(199, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 620 UNIPHIER_PINCTRL_PIN(199, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE,
623 -1, UNIPHIER_PIN_DRV_FIXED_8, 621 -1, UNIPHIER_PIN_DRV_FIXED8,
624 199, UNIPHIER_PIN_PULL_DOWN), 622 199, UNIPHIER_PIN_PULL_DOWN),
625 UNIPHIER_PINCTRL_PIN(200, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 623 UNIPHIER_PINCTRL_PIN(200, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE,
626 -1, UNIPHIER_PIN_DRV_FIXED_8, 624 -1, UNIPHIER_PIN_DRV_FIXED8,
627 200, UNIPHIER_PIN_PULL_DOWN), 625 200, UNIPHIER_PIN_PULL_DOWN),
628 UNIPHIER_PINCTRL_PIN(201, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 626 UNIPHIER_PINCTRL_PIN(201, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE,
629 -1, UNIPHIER_PIN_DRV_FIXED_8, 627 -1, UNIPHIER_PIN_DRV_FIXED8,
630 201, UNIPHIER_PIN_PULL_DOWN), 628 201, UNIPHIER_PIN_PULL_DOWN),
631 UNIPHIER_PINCTRL_PIN(202, "AO2D0", UNIPHIER_PIN_IECTRL_NONE, 629 UNIPHIER_PINCTRL_PIN(202, "AO2D0", UNIPHIER_PIN_IECTRL_NONE,
632 -1, UNIPHIER_PIN_DRV_FIXED_8, 630 -1, UNIPHIER_PIN_DRV_FIXED8,
633 202, UNIPHIER_PIN_PULL_DOWN), 631 202, UNIPHIER_PIN_PULL_DOWN),
634 UNIPHIER_PINCTRL_PIN(203, "AO2D1", UNIPHIER_PIN_IECTRL_NONE, 632 UNIPHIER_PINCTRL_PIN(203, "AO2D1", UNIPHIER_PIN_IECTRL_NONE,
635 -1, UNIPHIER_PIN_DRV_FIXED_8, 633 -1, UNIPHIER_PIN_DRV_FIXED8,
636 203, UNIPHIER_PIN_PULL_DOWN), 634 203, UNIPHIER_PIN_PULL_DOWN),
637 UNIPHIER_PINCTRL_PIN(204, "AO2D2", UNIPHIER_PIN_IECTRL_NONE, 635 UNIPHIER_PINCTRL_PIN(204, "AO2D2", UNIPHIER_PIN_IECTRL_NONE,
638 -1, UNIPHIER_PIN_DRV_FIXED_8, 636 -1, UNIPHIER_PIN_DRV_FIXED8,
639 204, UNIPHIER_PIN_PULL_DOWN), 637 204, UNIPHIER_PIN_PULL_DOWN),
640 UNIPHIER_PINCTRL_PIN(205, "AO2D3", UNIPHIER_PIN_IECTRL_NONE, 638 UNIPHIER_PINCTRL_PIN(205, "AO2D3", UNIPHIER_PIN_IECTRL_NONE,
641 -1, UNIPHIER_PIN_DRV_FIXED_8, 639 -1, UNIPHIER_PIN_DRV_FIXED8,
642 205, UNIPHIER_PIN_PULL_DOWN), 640 205, UNIPHIER_PIN_PULL_DOWN),
643 UNIPHIER_PINCTRL_PIN(206, "AO3DACCK", UNIPHIER_PIN_IECTRL_NONE, 641 UNIPHIER_PINCTRL_PIN(206, "AO3DACCK", UNIPHIER_PIN_IECTRL_NONE,
644 -1, UNIPHIER_PIN_DRV_FIXED_8, 642 -1, UNIPHIER_PIN_DRV_FIXED8,
645 206, UNIPHIER_PIN_PULL_DOWN), 643 206, UNIPHIER_PIN_PULL_DOWN),
646 UNIPHIER_PINCTRL_PIN(207, "AO3BCK", UNIPHIER_PIN_IECTRL_NONE, 644 UNIPHIER_PINCTRL_PIN(207, "AO3BCK", UNIPHIER_PIN_IECTRL_NONE,
647 -1, UNIPHIER_PIN_DRV_FIXED_8, 645 -1, UNIPHIER_PIN_DRV_FIXED8,
648 207, UNIPHIER_PIN_PULL_DOWN), 646 207, UNIPHIER_PIN_PULL_DOWN),
649 UNIPHIER_PINCTRL_PIN(208, "AO3LRCK", UNIPHIER_PIN_IECTRL_NONE, 647 UNIPHIER_PINCTRL_PIN(208, "AO3LRCK", UNIPHIER_PIN_IECTRL_NONE,
650 -1, UNIPHIER_PIN_DRV_FIXED_8, 648 -1, UNIPHIER_PIN_DRV_FIXED8,
651 208, UNIPHIER_PIN_PULL_DOWN), 649 208, UNIPHIER_PIN_PULL_DOWN),
652 UNIPHIER_PINCTRL_PIN(209, "AO3DMIX", UNIPHIER_PIN_IECTRL_NONE, 650 UNIPHIER_PINCTRL_PIN(209, "AO3DMIX", UNIPHIER_PIN_IECTRL_NONE,
653 -1, UNIPHIER_PIN_DRV_FIXED_8, 651 -1, UNIPHIER_PIN_DRV_FIXED8,
654 209, UNIPHIER_PIN_PULL_DOWN), 652 209, UNIPHIER_PIN_PULL_DOWN),
655 UNIPHIER_PINCTRL_PIN(210, "AO4DACCK", UNIPHIER_PIN_IECTRL_NONE, 653 UNIPHIER_PINCTRL_PIN(210, "AO4DACCK", UNIPHIER_PIN_IECTRL_NONE,
656 -1, UNIPHIER_PIN_DRV_FIXED_8, 654 -1, UNIPHIER_PIN_DRV_FIXED8,
657 210, UNIPHIER_PIN_PULL_DOWN), 655 210, UNIPHIER_PIN_PULL_DOWN),
658 UNIPHIER_PINCTRL_PIN(211, "AO4BCK", UNIPHIER_PIN_IECTRL_NONE, 656 UNIPHIER_PINCTRL_PIN(211, "AO4BCK", UNIPHIER_PIN_IECTRL_NONE,
659 -1, UNIPHIER_PIN_DRV_FIXED_8, 657 -1, UNIPHIER_PIN_DRV_FIXED8,
660 211, UNIPHIER_PIN_PULL_DOWN), 658 211, UNIPHIER_PIN_PULL_DOWN),
661 UNIPHIER_PINCTRL_PIN(212, "AO4LRCK", UNIPHIER_PIN_IECTRL_NONE, 659 UNIPHIER_PINCTRL_PIN(212, "AO4LRCK", UNIPHIER_PIN_IECTRL_NONE,
662 -1, UNIPHIER_PIN_DRV_FIXED_8, 660 -1, UNIPHIER_PIN_DRV_FIXED8,
663 212, UNIPHIER_PIN_PULL_DOWN), 661 212, UNIPHIER_PIN_PULL_DOWN),
664 UNIPHIER_PINCTRL_PIN(213, "AO4DMIX", UNIPHIER_PIN_IECTRL_NONE, 662 UNIPHIER_PINCTRL_PIN(213, "AO4DMIX", UNIPHIER_PIN_IECTRL_NONE,
665 -1, UNIPHIER_PIN_DRV_FIXED_8, 663 -1, UNIPHIER_PIN_DRV_FIXED8,
666 213, UNIPHIER_PIN_PULL_DOWN), 664 213, UNIPHIER_PIN_PULL_DOWN),
667 UNIPHIER_PINCTRL_PIN(214, "VI1CLK", UNIPHIER_PIN_IECTRL_NONE, 665 UNIPHIER_PINCTRL_PIN(214, "VI1CLK", UNIPHIER_PIN_IECTRL_NONE,
668 -1, UNIPHIER_PIN_DRV_FIXED_8, 666 -1, UNIPHIER_PIN_DRV_FIXED8,
669 214, UNIPHIER_PIN_PULL_DOWN), 667 214, UNIPHIER_PIN_PULL_DOWN),
670 UNIPHIER_PINCTRL_PIN(215, "VI1C0", UNIPHIER_PIN_IECTRL_NONE, 668 UNIPHIER_PINCTRL_PIN(215, "VI1C0", UNIPHIER_PIN_IECTRL_NONE,
671 -1, UNIPHIER_PIN_DRV_FIXED_8, 669 -1, UNIPHIER_PIN_DRV_FIXED8,
672 215, UNIPHIER_PIN_PULL_DOWN), 670 215, UNIPHIER_PIN_PULL_DOWN),
673 UNIPHIER_PINCTRL_PIN(216, "VI1C1", UNIPHIER_PIN_IECTRL_NONE, 671 UNIPHIER_PINCTRL_PIN(216, "VI1C1", UNIPHIER_PIN_IECTRL_NONE,
674 -1, UNIPHIER_PIN_DRV_FIXED_8, 672 -1, UNIPHIER_PIN_DRV_FIXED8,
675 216, UNIPHIER_PIN_PULL_DOWN), 673 216, UNIPHIER_PIN_PULL_DOWN),
676 UNIPHIER_PINCTRL_PIN(217, "VI1C2", UNIPHIER_PIN_IECTRL_NONE, 674 UNIPHIER_PINCTRL_PIN(217, "VI1C2", UNIPHIER_PIN_IECTRL_NONE,
677 -1, UNIPHIER_PIN_DRV_FIXED_8, 675 -1, UNIPHIER_PIN_DRV_FIXED8,
678 217, UNIPHIER_PIN_PULL_DOWN), 676 217, UNIPHIER_PIN_PULL_DOWN),
679 UNIPHIER_PINCTRL_PIN(218, "VI1C3", UNIPHIER_PIN_IECTRL_NONE, 677 UNIPHIER_PINCTRL_PIN(218, "VI1C3", UNIPHIER_PIN_IECTRL_NONE,
680 -1, UNIPHIER_PIN_DRV_FIXED_8, 678 -1, UNIPHIER_PIN_DRV_FIXED8,
681 218, UNIPHIER_PIN_PULL_DOWN), 679 218, UNIPHIER_PIN_PULL_DOWN),
682 UNIPHIER_PINCTRL_PIN(219, "VI1C4", UNIPHIER_PIN_IECTRL_NONE, 680 UNIPHIER_PINCTRL_PIN(219, "VI1C4", UNIPHIER_PIN_IECTRL_NONE,
683 -1, UNIPHIER_PIN_DRV_FIXED_8, 681 -1, UNIPHIER_PIN_DRV_FIXED8,
684 219, UNIPHIER_PIN_PULL_DOWN), 682 219, UNIPHIER_PIN_PULL_DOWN),
685 UNIPHIER_PINCTRL_PIN(220, "VI1C5", UNIPHIER_PIN_IECTRL_NONE, 683 UNIPHIER_PINCTRL_PIN(220, "VI1C5", UNIPHIER_PIN_IECTRL_NONE,
686 -1, UNIPHIER_PIN_DRV_FIXED_8, 684 -1, UNIPHIER_PIN_DRV_FIXED8,
687 220, UNIPHIER_PIN_PULL_DOWN), 685 220, UNIPHIER_PIN_PULL_DOWN),
688 UNIPHIER_PINCTRL_PIN(221, "VI1C6", UNIPHIER_PIN_IECTRL_NONE, 686 UNIPHIER_PINCTRL_PIN(221, "VI1C6", UNIPHIER_PIN_IECTRL_NONE,
689 -1, UNIPHIER_PIN_DRV_FIXED_8, 687 -1, UNIPHIER_PIN_DRV_FIXED8,
690 221, UNIPHIER_PIN_PULL_DOWN), 688 221, UNIPHIER_PIN_PULL_DOWN),
691 UNIPHIER_PINCTRL_PIN(222, "VI1C7", UNIPHIER_PIN_IECTRL_NONE, 689 UNIPHIER_PINCTRL_PIN(222, "VI1C7", UNIPHIER_PIN_IECTRL_NONE,
692 -1, UNIPHIER_PIN_DRV_FIXED_8, 690 -1, UNIPHIER_PIN_DRV_FIXED8,
693 222, UNIPHIER_PIN_PULL_DOWN), 691 222, UNIPHIER_PIN_PULL_DOWN),
694 UNIPHIER_PINCTRL_PIN(223, "VI1C8", UNIPHIER_PIN_IECTRL_NONE, 692 UNIPHIER_PINCTRL_PIN(223, "VI1C8", UNIPHIER_PIN_IECTRL_NONE,
695 -1, UNIPHIER_PIN_DRV_FIXED_8, 693 -1, UNIPHIER_PIN_DRV_FIXED8,
696 223, UNIPHIER_PIN_PULL_DOWN), 694 223, UNIPHIER_PIN_PULL_DOWN),
697 UNIPHIER_PINCTRL_PIN(224, "VI1C9", UNIPHIER_PIN_IECTRL_NONE, 695 UNIPHIER_PINCTRL_PIN(224, "VI1C9", UNIPHIER_PIN_IECTRL_NONE,
698 -1, UNIPHIER_PIN_DRV_FIXED_8, 696 -1, UNIPHIER_PIN_DRV_FIXED8,
699 224, UNIPHIER_PIN_PULL_DOWN), 697 224, UNIPHIER_PIN_PULL_DOWN),
700 UNIPHIER_PINCTRL_PIN(225, "VI1Y0", UNIPHIER_PIN_IECTRL_NONE, 698 UNIPHIER_PINCTRL_PIN(225, "VI1Y0", UNIPHIER_PIN_IECTRL_NONE,
701 -1, UNIPHIER_PIN_DRV_FIXED_8, 699 -1, UNIPHIER_PIN_DRV_FIXED8,
702 225, UNIPHIER_PIN_PULL_DOWN), 700 225, UNIPHIER_PIN_PULL_DOWN),
703 UNIPHIER_PINCTRL_PIN(226, "VI1Y1", UNIPHIER_PIN_IECTRL_NONE, 701 UNIPHIER_PINCTRL_PIN(226, "VI1Y1", UNIPHIER_PIN_IECTRL_NONE,
704 -1, UNIPHIER_PIN_DRV_FIXED_8, 702 -1, UNIPHIER_PIN_DRV_FIXED8,
705 226, UNIPHIER_PIN_PULL_DOWN), 703 226, UNIPHIER_PIN_PULL_DOWN),
706 UNIPHIER_PINCTRL_PIN(227, "VI1Y2", UNIPHIER_PIN_IECTRL_NONE, 704 UNIPHIER_PINCTRL_PIN(227, "VI1Y2", UNIPHIER_PIN_IECTRL_NONE,
707 -1, UNIPHIER_PIN_DRV_FIXED_8, 705 -1, UNIPHIER_PIN_DRV_FIXED8,
708 227, UNIPHIER_PIN_PULL_DOWN), 706 227, UNIPHIER_PIN_PULL_DOWN),
709 UNIPHIER_PINCTRL_PIN(228, "VI1Y3", UNIPHIER_PIN_IECTRL_NONE, 707 UNIPHIER_PINCTRL_PIN(228, "VI1Y3", UNIPHIER_PIN_IECTRL_NONE,
710 -1, UNIPHIER_PIN_DRV_FIXED_8, 708 -1, UNIPHIER_PIN_DRV_FIXED8,
711 228, UNIPHIER_PIN_PULL_DOWN), 709 228, UNIPHIER_PIN_PULL_DOWN),
712 UNIPHIER_PINCTRL_PIN(229, "VI1Y4", UNIPHIER_PIN_IECTRL_NONE, 710 UNIPHIER_PINCTRL_PIN(229, "VI1Y4", UNIPHIER_PIN_IECTRL_NONE,
713 -1, UNIPHIER_PIN_DRV_FIXED_8, 711 -1, UNIPHIER_PIN_DRV_FIXED8,
714 229, UNIPHIER_PIN_PULL_DOWN), 712 229, UNIPHIER_PIN_PULL_DOWN),
715 UNIPHIER_PINCTRL_PIN(230, "VI1Y5", UNIPHIER_PIN_IECTRL_NONE, 713 UNIPHIER_PINCTRL_PIN(230, "VI1Y5", UNIPHIER_PIN_IECTRL_NONE,
716 -1, UNIPHIER_PIN_DRV_FIXED_8, 714 -1, UNIPHIER_PIN_DRV_FIXED8,
717 230, UNIPHIER_PIN_PULL_DOWN), 715 230, UNIPHIER_PIN_PULL_DOWN),
718 UNIPHIER_PINCTRL_PIN(231, "VI1Y6", UNIPHIER_PIN_IECTRL_NONE, 716 UNIPHIER_PINCTRL_PIN(231, "VI1Y6", UNIPHIER_PIN_IECTRL_NONE,
719 -1, UNIPHIER_PIN_DRV_FIXED_8, 717 -1, UNIPHIER_PIN_DRV_FIXED8,
720 231, UNIPHIER_PIN_PULL_DOWN), 718 231, UNIPHIER_PIN_PULL_DOWN),
721 UNIPHIER_PINCTRL_PIN(232, "VI1Y7", UNIPHIER_PIN_IECTRL_NONE, 719 UNIPHIER_PINCTRL_PIN(232, "VI1Y7", UNIPHIER_PIN_IECTRL_NONE,
722 -1, UNIPHIER_PIN_DRV_FIXED_8, 720 -1, UNIPHIER_PIN_DRV_FIXED8,
723 232, UNIPHIER_PIN_PULL_DOWN), 721 232, UNIPHIER_PIN_PULL_DOWN),
724 UNIPHIER_PINCTRL_PIN(233, "VI1Y8", UNIPHIER_PIN_IECTRL_NONE, 722 UNIPHIER_PINCTRL_PIN(233, "VI1Y8", UNIPHIER_PIN_IECTRL_NONE,
725 -1, UNIPHIER_PIN_DRV_FIXED_8, 723 -1, UNIPHIER_PIN_DRV_FIXED8,
726 233, UNIPHIER_PIN_PULL_DOWN), 724 233, UNIPHIER_PIN_PULL_DOWN),
727 UNIPHIER_PINCTRL_PIN(234, "VI1Y9", UNIPHIER_PIN_IECTRL_NONE, 725 UNIPHIER_PINCTRL_PIN(234, "VI1Y9", UNIPHIER_PIN_IECTRL_NONE,
728 -1, UNIPHIER_PIN_DRV_FIXED_8, 726 -1, UNIPHIER_PIN_DRV_FIXED8,
729 234, UNIPHIER_PIN_PULL_DOWN), 727 234, UNIPHIER_PIN_PULL_DOWN),
730 UNIPHIER_PINCTRL_PIN(235, "VI1DE", UNIPHIER_PIN_IECTRL_NONE, 728 UNIPHIER_PINCTRL_PIN(235, "VI1DE", UNIPHIER_PIN_IECTRL_NONE,
731 -1, UNIPHIER_PIN_DRV_FIXED_8, 729 -1, UNIPHIER_PIN_DRV_FIXED8,
732 235, UNIPHIER_PIN_PULL_DOWN), 730 235, UNIPHIER_PIN_PULL_DOWN),
733 UNIPHIER_PINCTRL_PIN(236, "VI1HSYNC", UNIPHIER_PIN_IECTRL_NONE, 731 UNIPHIER_PINCTRL_PIN(236, "VI1HSYNC", UNIPHIER_PIN_IECTRL_NONE,
734 -1, UNIPHIER_PIN_DRV_FIXED_8, 732 -1, UNIPHIER_PIN_DRV_FIXED8,
735 236, UNIPHIER_PIN_PULL_DOWN), 733 236, UNIPHIER_PIN_PULL_DOWN),
736 UNIPHIER_PINCTRL_PIN(237, "VI1VSYNC", UNIPHIER_PIN_IECTRL_NONE, 734 UNIPHIER_PINCTRL_PIN(237, "VI1VSYNC", UNIPHIER_PIN_IECTRL_NONE,
737 -1, UNIPHIER_PIN_DRV_FIXED_8, 735 -1, UNIPHIER_PIN_DRV_FIXED8,
738 237, UNIPHIER_PIN_PULL_DOWN), 736 237, UNIPHIER_PIN_PULL_DOWN),
739 UNIPHIER_PINCTRL_PIN(238, "VO1CLK", UNIPHIER_PIN_IECTRL_NONE, 737 UNIPHIER_PINCTRL_PIN(238, "VO1CLK", UNIPHIER_PIN_IECTRL_NONE,
740 -1, UNIPHIER_PIN_DRV_FIXED_8, 738 -1, UNIPHIER_PIN_DRV_FIXED8,
741 238, UNIPHIER_PIN_PULL_DOWN), 739 238, UNIPHIER_PIN_PULL_DOWN),
742 UNIPHIER_PINCTRL_PIN(239, "VO1D0", UNIPHIER_PIN_IECTRL_NONE, 740 UNIPHIER_PINCTRL_PIN(239, "VO1D0", UNIPHIER_PIN_IECTRL_NONE,
743 -1, UNIPHIER_PIN_DRV_FIXED_8, 741 -1, UNIPHIER_PIN_DRV_FIXED8,
744 239, UNIPHIER_PIN_PULL_DOWN), 742 239, UNIPHIER_PIN_PULL_DOWN),
745 UNIPHIER_PINCTRL_PIN(240, "VO1D1", UNIPHIER_PIN_IECTRL_NONE, 743 UNIPHIER_PINCTRL_PIN(240, "VO1D1", UNIPHIER_PIN_IECTRL_NONE,
746 -1, UNIPHIER_PIN_DRV_FIXED_8, 744 -1, UNIPHIER_PIN_DRV_FIXED8,
747 240, UNIPHIER_PIN_PULL_DOWN), 745 240, UNIPHIER_PIN_PULL_DOWN),
748 UNIPHIER_PINCTRL_PIN(241, "VO1D2", UNIPHIER_PIN_IECTRL_NONE, 746 UNIPHIER_PINCTRL_PIN(241, "VO1D2", UNIPHIER_PIN_IECTRL_NONE,
749 -1, UNIPHIER_PIN_DRV_FIXED_8, 747 -1, UNIPHIER_PIN_DRV_FIXED8,
750 241, UNIPHIER_PIN_PULL_DOWN), 748 241, UNIPHIER_PIN_PULL_DOWN),
751 UNIPHIER_PINCTRL_PIN(242, "VO1D3", UNIPHIER_PIN_IECTRL_NONE, 749 UNIPHIER_PINCTRL_PIN(242, "VO1D3", UNIPHIER_PIN_IECTRL_NONE,
752 -1, UNIPHIER_PIN_DRV_FIXED_8, 750 -1, UNIPHIER_PIN_DRV_FIXED8,
753 242, UNIPHIER_PIN_PULL_DOWN), 751 242, UNIPHIER_PIN_PULL_DOWN),
754 UNIPHIER_PINCTRL_PIN(243, "VO1D4", UNIPHIER_PIN_IECTRL_NONE, 752 UNIPHIER_PINCTRL_PIN(243, "VO1D4", UNIPHIER_PIN_IECTRL_NONE,
755 -1, UNIPHIER_PIN_DRV_FIXED_8, 753 -1, UNIPHIER_PIN_DRV_FIXED8,
756 243, UNIPHIER_PIN_PULL_DOWN), 754 243, UNIPHIER_PIN_PULL_DOWN),
757 UNIPHIER_PINCTRL_PIN(244, "VO1D5", UNIPHIER_PIN_IECTRL_NONE, 755 UNIPHIER_PINCTRL_PIN(244, "VO1D5", UNIPHIER_PIN_IECTRL_NONE,
758 -1, UNIPHIER_PIN_DRV_FIXED_8, 756 -1, UNIPHIER_PIN_DRV_FIXED8,
759 244, UNIPHIER_PIN_PULL_DOWN), 757 244, UNIPHIER_PIN_PULL_DOWN),
760 UNIPHIER_PINCTRL_PIN(245, "VO1D6", UNIPHIER_PIN_IECTRL_NONE, 758 UNIPHIER_PINCTRL_PIN(245, "VO1D6", UNIPHIER_PIN_IECTRL_NONE,
761 -1, UNIPHIER_PIN_DRV_FIXED_8, 759 -1, UNIPHIER_PIN_DRV_FIXED8,
762 245, UNIPHIER_PIN_PULL_DOWN), 760 245, UNIPHIER_PIN_PULL_DOWN),
763 UNIPHIER_PINCTRL_PIN(246, "VO1D7", UNIPHIER_PIN_IECTRL_NONE, 761 UNIPHIER_PINCTRL_PIN(246, "VO1D7", UNIPHIER_PIN_IECTRL_NONE,
764 -1, UNIPHIER_PIN_DRV_FIXED_8, 762 -1, UNIPHIER_PIN_DRV_FIXED8,
765 246, UNIPHIER_PIN_PULL_DOWN), 763 246, UNIPHIER_PIN_PULL_DOWN),
766 UNIPHIER_PINCTRL_PIN(247, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 764 UNIPHIER_PINCTRL_PIN(247, "SDCD", UNIPHIER_PIN_IECTRL_NONE,
767 -1, UNIPHIER_PIN_DRV_FIXED_8, 765 -1, UNIPHIER_PIN_DRV_FIXED8,
768 247, UNIPHIER_PIN_PULL_UP), 766 247, UNIPHIER_PIN_PULL_UP),
769 UNIPHIER_PINCTRL_PIN(248, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 767 UNIPHIER_PINCTRL_PIN(248, "SDWP", UNIPHIER_PIN_IECTRL_NONE,
770 -1, UNIPHIER_PIN_DRV_FIXED_8, 768 -1, UNIPHIER_PIN_DRV_FIXED8,
771 248, UNIPHIER_PIN_PULL_UP), 769 248, UNIPHIER_PIN_PULL_UP),
772 UNIPHIER_PINCTRL_PIN(249, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 770 UNIPHIER_PINCTRL_PIN(249, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE,
773 -1, UNIPHIER_PIN_DRV_FIXED_8, 771 -1, UNIPHIER_PIN_DRV_FIXED8,
774 249, UNIPHIER_PIN_PULL_UP), 772 249, UNIPHIER_PIN_PULL_UP),
775 UNIPHIER_PINCTRL_PIN(250, "SDCLK", UNIPHIER_PIN_IECTRL_NONE, 773 UNIPHIER_PINCTRL_PIN(250, "SDCLK", UNIPHIER_PIN_IECTRL_NONE,
776 40, UNIPHIER_PIN_DRV_8_12_16_20, 774 10, UNIPHIER_PIN_DRV_2BIT,
777 -1, UNIPHIER_PIN_PULL_UP_FIXED), 775 -1, UNIPHIER_PIN_PULL_UP_FIXED),
778 UNIPHIER_PINCTRL_PIN(251, "SDCMD", UNIPHIER_PIN_IECTRL_NONE, 776 UNIPHIER_PINCTRL_PIN(251, "SDCMD", UNIPHIER_PIN_IECTRL_NONE,
779 44, UNIPHIER_PIN_DRV_8_12_16_20, 777 11, UNIPHIER_PIN_DRV_2BIT,
780 -1, UNIPHIER_PIN_PULL_UP_FIXED), 778 -1, UNIPHIER_PIN_PULL_UP_FIXED),
781 UNIPHIER_PINCTRL_PIN(252, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE, 779 UNIPHIER_PINCTRL_PIN(252, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE,
782 48, UNIPHIER_PIN_DRV_8_12_16_20, 780 12, UNIPHIER_PIN_DRV_2BIT,
783 -1, UNIPHIER_PIN_PULL_UP_FIXED), 781 -1, UNIPHIER_PIN_PULL_UP_FIXED),
784 UNIPHIER_PINCTRL_PIN(253, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE, 782 UNIPHIER_PINCTRL_PIN(253, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE,
785 52, UNIPHIER_PIN_DRV_8_12_16_20, 783 13, UNIPHIER_PIN_DRV_2BIT,
786 -1, UNIPHIER_PIN_PULL_UP_FIXED), 784 -1, UNIPHIER_PIN_PULL_UP_FIXED),
787 UNIPHIER_PINCTRL_PIN(254, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE, 785 UNIPHIER_PINCTRL_PIN(254, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE,
788 56, UNIPHIER_PIN_DRV_8_12_16_20, 786 14, UNIPHIER_PIN_DRV_2BIT,
789 -1, UNIPHIER_PIN_PULL_UP_FIXED), 787 -1, UNIPHIER_PIN_PULL_UP_FIXED),
790 UNIPHIER_PINCTRL_PIN(255, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE, 788 UNIPHIER_PINCTRL_PIN(255, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE,
791 60, UNIPHIER_PIN_DRV_8_12_16_20, 789 15, UNIPHIER_PIN_DRV_2BIT,
792 -1, UNIPHIER_PIN_PULL_UP_FIXED), 790 -1, UNIPHIER_PIN_PULL_UP_FIXED),
793}; 791};
794 792
795static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; 793static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
796static const unsigned emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0}; 794static const int emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0};
797static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; 795static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
798static const unsigned emmc_dat8_muxvals[] = {0, 0, 0, 0}; 796static const int emmc_dat8_muxvals[] = {0, 0, 0, 0};
799static const unsigned i2c0_pins[] = {112, 113}; 797static const unsigned i2c0_pins[] = {112, 113};
800static const unsigned i2c0_muxvals[] = {0, 0}; 798static const int i2c0_muxvals[] = {0, 0};
801static const unsigned i2c1_pins[] = {114, 115}; 799static const unsigned i2c1_pins[] = {114, 115};
802static const unsigned i2c1_muxvals[] = {0, 0}; 800static const int i2c1_muxvals[] = {0, 0};
803static const unsigned i2c2_pins[] = {116, 117}; 801static const unsigned i2c2_pins[] = {116, 117};
804static const unsigned i2c2_muxvals[] = {0, 0}; 802static const int i2c2_muxvals[] = {0, 0};
805static const unsigned i2c3_pins[] = {118, 119}; 803static const unsigned i2c3_pins[] = {118, 119};
806static const unsigned i2c3_muxvals[] = {0, 0}; 804static const int i2c3_muxvals[] = {0, 0};
807static const unsigned i2c5_pins[] = {87, 88}; 805static const unsigned i2c5_pins[] = {87, 88};
808static const unsigned i2c5_muxvals[] = {2, 2}; 806static const int i2c5_muxvals[] = {2, 2};
809static const unsigned i2c5b_pins[] = {196, 197}; 807static const unsigned i2c5b_pins[] = {196, 197};
810static const unsigned i2c5b_muxvals[] = {2, 2}; 808static const int i2c5b_muxvals[] = {2, 2};
811static const unsigned i2c5c_pins[] = {215, 216}; 809static const unsigned i2c5c_pins[] = {215, 216};
812static const unsigned i2c5c_muxvals[] = {2, 2}; 810static const int i2c5c_muxvals[] = {2, 2};
813static const unsigned i2c6_pins[] = {101, 102}; 811static const unsigned i2c6_pins[] = {101, 102};
814static const unsigned i2c6_muxvals[] = {2, 2}; 812static const int i2c6_muxvals[] = {2, 2};
815static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 813static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30,
816 31, 32, 33, 34, 35}; 814 31, 32, 33, 34, 35};
817static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 815static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
818 0, 0};
819static const unsigned nand_cs1_pins[] = {26, 27}; 816static const unsigned nand_cs1_pins[] = {26, 27};
820static const unsigned nand_cs1_muxvals[] = {0, 0}; 817static const int nand_cs1_muxvals[] = {0, 0};
821static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258}; 818static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258};
822static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 819static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
820static const unsigned system_bus_pins[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
821 14, 15, 16, 17};
822static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
823 0};
824static const unsigned system_bus_cs0_pins[] = {105};
825static const int system_bus_cs0_muxvals[] = {1};
826static const unsigned system_bus_cs1_pins[] = {18};
827static const int system_bus_cs1_muxvals[] = {0};
828static const unsigned system_bus_cs2_pins[] = {106};
829static const int system_bus_cs2_muxvals[] = {1};
830static const unsigned system_bus_cs3_pins[] = {100};
831static const int system_bus_cs3_muxvals[] = {1};
832static const unsigned system_bus_cs4_pins[] = {101};
833static const int system_bus_cs4_muxvals[] = {1};
834static const unsigned system_bus_cs5_pins[] = {102};
835static const int system_bus_cs5_muxvals[] = {1};
836static const unsigned system_bus_cs6_pins[] = {69};
837static const int system_bus_cs6_muxvals[] = {5};
838static const unsigned system_bus_cs7_pins[] = {70};
839static const int system_bus_cs7_muxvals[] = {5};
823static const unsigned uart0_pins[] = {47, 48}; 840static const unsigned uart0_pins[] = {47, 48};
824static const unsigned uart0_muxvals[] = {0, 0}; 841static const int uart0_muxvals[] = {0, 0};
825static const unsigned uart0b_pins[] = {227, 228}; 842static const unsigned uart0b_pins[] = {227, 228};
826static const unsigned uart0b_muxvals[] = {3, 3}; 843static const int uart0b_muxvals[] = {3, 3};
827static const unsigned uart1_pins[] = {49, 50}; 844static const unsigned uart1_pins[] = {49, 50};
828static const unsigned uart1_muxvals[] = {0, 0}; 845static const int uart1_muxvals[] = {0, 0};
829static const unsigned uart2_pins[] = {51, 52}; 846static const unsigned uart2_pins[] = {51, 52};
830static const unsigned uart2_muxvals[] = {0, 0}; 847static const int uart2_muxvals[] = {0, 0};
831static const unsigned uart3_pins[] = {53, 54}; 848static const unsigned uart3_pins[] = {53, 54};
832static const unsigned uart3_muxvals[] = {0, 0}; 849static const int uart3_muxvals[] = {0, 0};
833static const unsigned usb0_pins[] = {124, 125}; 850static const unsigned usb0_pins[] = {124, 125};
834static const unsigned usb0_muxvals[] = {0, 0}; 851static const int usb0_muxvals[] = {0, 0};
835static const unsigned usb1_pins[] = {126, 127}; 852static const unsigned usb1_pins[] = {126, 127};
836static const unsigned usb1_muxvals[] = {0, 0}; 853static const int usb1_muxvals[] = {0, 0};
837static const unsigned usb2_pins[] = {128, 129}; 854static const unsigned usb2_pins[] = {128, 129};
838static const unsigned usb2_muxvals[] = {0, 0}; 855static const int usb2_muxvals[] = {0, 0};
839static const unsigned port_range0_pins[] = { 856static const unsigned port_range0_pins[] = {
840 89, 90, 91, 92, 93, 94, 95, 96, /* PORT0x */ 857 89, 90, 91, 92, 93, 94, 95, 96, /* PORT0x */
841 97, 98, 99, 100, 101, 102, 103, 104, /* PORT1x */ 858 97, 98, 99, 100, 101, 102, 103, 104, /* PORT1x */
@@ -853,7 +870,7 @@ static const unsigned port_range0_pins[] = {
853 179, 180, 181, 182, 186, 187, 188, 189, /* PORT13x */ 870 179, 180, 181, 182, 186, 187, 188, 189, /* PORT13x */
854 4, 5, 6, 7, 8, 9, 10, 11, /* PORT14x */ 871 4, 5, 6, 7, 8, 9, 10, 11, /* PORT14x */
855}; 872};
856static const unsigned port_range0_muxvals[] = { 873static const int port_range0_muxvals[] = {
857 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 874 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */
858 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 875 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */
859 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ 876 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */
@@ -886,7 +903,7 @@ static const unsigned port_range1_pins[] = {
886 105, 106, 18, 27, 36, 128, 132, 137, /* PORT29x */ 903 105, 106, 18, 27, 36, 128, 132, 137, /* PORT29x */
887 183, 184, 185, 84, 47, 48, 51, 52, /* PORT30x */ 904 183, 184, 185, 84, 47, 48, 51, 52, /* PORT30x */
888}; 905};
889static const unsigned port_range1_muxvals[] = { 906static const int port_range1_muxvals[] = {
890 15, 15, 15, /* PORT175-177 */ 907 15, 15, 15, /* PORT175-177 */
891 15, 15, 15, 15, 15, 15, 15, 15, /* PORT18x */ 908 15, 15, 15, 15, 15, 15, 15, 15, /* PORT18x */
892 15, 15, 15, 15, 15, 15, 15, 15, /* PORT19x */ 909 15, 15, 15, 15, 15, 15, 15, 15, /* PORT19x */
@@ -907,7 +924,7 @@ static const unsigned xirq_pins[] = {
907 76, 77, 78, 79, 80, 81, 82, 83, /* XIRQ8-15 */ 924 76, 77, 78, 79, 80, 81, 82, 83, /* XIRQ8-15 */
908 84, 85, 86, 87, 88, /* XIRQ16-20 */ 925 84, 85, 86, 87, 88, /* XIRQ16-20 */
909}; 926};
910static const unsigned xirq_muxvals[] = { 927static const int xirq_muxvals[] = {
911 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */ 928 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */
912 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */ 929 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */
913 14, 14, 14, 14, 14, /* XIRQ16-20 */ 930 14, 14, 14, 14, 14, /* XIRQ16-20 */
@@ -915,11 +932,11 @@ static const unsigned xirq_muxvals[] = {
915static const unsigned xirq_alternatives_pins[] = { 932static const unsigned xirq_alternatives_pins[] = {
916 91, 92, 239, 144, 240, 156, 241, 106, 128, 933 91, 92, 239, 144, 240, 156, 241, 106, 128,
917}; 934};
918static const unsigned xirq_alternatives_muxvals[] = { 935static const int xirq_alternatives_muxvals[] = {
919 14, 14, 14, 14, 14, 14, 14, 14, 14, 936 14, 14, 14, 14, 14, 14, 14, 14, 14,
920}; 937};
921 938
922static const struct uniphier_pinctrl_group ph1_pro5_groups[] = { 939static const struct uniphier_pinctrl_group uniphier_pro5_groups[] = {
923 UNIPHIER_PINCTRL_GROUP(nand), 940 UNIPHIER_PINCTRL_GROUP(nand),
924 UNIPHIER_PINCTRL_GROUP(nand_cs1), 941 UNIPHIER_PINCTRL_GROUP(nand_cs1),
925 UNIPHIER_PINCTRL_GROUP(emmc), 942 UNIPHIER_PINCTRL_GROUP(emmc),
@@ -933,6 +950,15 @@ static const struct uniphier_pinctrl_group ph1_pro5_groups[] = {
933 UNIPHIER_PINCTRL_GROUP(i2c5c), 950 UNIPHIER_PINCTRL_GROUP(i2c5c),
934 UNIPHIER_PINCTRL_GROUP(i2c6), 951 UNIPHIER_PINCTRL_GROUP(i2c6),
935 UNIPHIER_PINCTRL_GROUP(sd), 952 UNIPHIER_PINCTRL_GROUP(sd),
953 UNIPHIER_PINCTRL_GROUP(system_bus),
954 UNIPHIER_PINCTRL_GROUP(system_bus_cs0),
955 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
956 UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
957 UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
958 UNIPHIER_PINCTRL_GROUP(system_bus_cs4),
959 UNIPHIER_PINCTRL_GROUP(system_bus_cs5),
960 UNIPHIER_PINCTRL_GROUP(system_bus_cs6),
961 UNIPHIER_PINCTRL_GROUP(system_bus_cs7),
936 UNIPHIER_PINCTRL_GROUP(uart0), 962 UNIPHIER_PINCTRL_GROUP(uart0),
937 UNIPHIER_PINCTRL_GROUP(uart0b), 963 UNIPHIER_PINCTRL_GROUP(uart0b),
938 UNIPHIER_PINCTRL_GROUP(uart1), 964 UNIPHIER_PINCTRL_GROUP(uart1),
@@ -1213,6 +1239,15 @@ static const char * const i2c5_groups[] = {"i2c5", "i2c5b", "i2c5c"};
1213static const char * const i2c6_groups[] = {"i2c6"}; 1239static const char * const i2c6_groups[] = {"i2c6"};
1214static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1240static const char * const nand_groups[] = {"nand", "nand_cs1"};
1215static const char * const sd_groups[] = {"sd"}; 1241static const char * const sd_groups[] = {"sd"};
1242static const char * const system_bus_groups[] = {"system_bus",
1243 "system_bus_cs0",
1244 "system_bus_cs1",
1245 "system_bus_cs2",
1246 "system_bus_cs3",
1247 "system_bus_cs4",
1248 "system_bus_cs5",
1249 "system_bus_cs6",
1250 "system_bus_cs7"};
1216static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1251static const char * const uart0_groups[] = {"uart0", "uart0b"};
1217static const char * const uart1_groups[] = {"uart1"}; 1252static const char * const uart1_groups[] = {"uart1"};
1218static const char * const uart2_groups[] = {"uart2"}; 1253static const char * const uart2_groups[] = {"uart2"};
@@ -1291,7 +1326,7 @@ static const char * const xirq_groups[] = {
1291 "xirq18b", "xirq18c", "xirq19b", "xirq20b", 1326 "xirq18b", "xirq18c", "xirq19b", "xirq20b",
1292}; 1327};
1293 1328
1294static const struct uniphier_pinmux_function ph1_pro5_functions[] = { 1329static const struct uniphier_pinmux_function uniphier_pro5_functions[] = {
1295 UNIPHIER_PINMUX_FUNCTION(emmc), 1330 UNIPHIER_PINMUX_FUNCTION(emmc),
1296 UNIPHIER_PINMUX_FUNCTION(i2c0), 1331 UNIPHIER_PINMUX_FUNCTION(i2c0),
1297 UNIPHIER_PINMUX_FUNCTION(i2c1), 1332 UNIPHIER_PINMUX_FUNCTION(i2c1),
@@ -1301,6 +1336,7 @@ static const struct uniphier_pinmux_function ph1_pro5_functions[] = {
1301 UNIPHIER_PINMUX_FUNCTION(i2c6), 1336 UNIPHIER_PINMUX_FUNCTION(i2c6),
1302 UNIPHIER_PINMUX_FUNCTION(nand), 1337 UNIPHIER_PINMUX_FUNCTION(nand),
1303 UNIPHIER_PINMUX_FUNCTION(sd), 1338 UNIPHIER_PINMUX_FUNCTION(sd),
1339 UNIPHIER_PINMUX_FUNCTION(system_bus),
1304 UNIPHIER_PINMUX_FUNCTION(uart0), 1340 UNIPHIER_PINMUX_FUNCTION(uart0),
1305 UNIPHIER_PINMUX_FUNCTION(uart1), 1341 UNIPHIER_PINMUX_FUNCTION(uart1),
1306 UNIPHIER_PINMUX_FUNCTION(uart2), 1342 UNIPHIER_PINMUX_FUNCTION(uart2),
@@ -1312,43 +1348,36 @@ static const struct uniphier_pinmux_function ph1_pro5_functions[] = {
1312 UNIPHIER_PINMUX_FUNCTION(xirq), 1348 UNIPHIER_PINMUX_FUNCTION(xirq),
1313}; 1349};
1314 1350
1315static struct uniphier_pinctrl_socdata ph1_pro5_pindata = { 1351static struct uniphier_pinctrl_socdata uniphier_pro5_pindata = {
1316 .groups = ph1_pro5_groups, 1352 .pins = uniphier_pro5_pins,
1317 .groups_count = ARRAY_SIZE(ph1_pro5_groups), 1353 .npins = ARRAY_SIZE(uniphier_pro5_pins),
1318 .functions = ph1_pro5_functions, 1354 .groups = uniphier_pro5_groups,
1319 .functions_count = ARRAY_SIZE(ph1_pro5_functions), 1355 .groups_count = ARRAY_SIZE(uniphier_pro5_groups),
1320 .mux_bits = 4, 1356 .functions = uniphier_pro5_functions,
1321 .reg_stride = 8, 1357 .functions_count = ARRAY_SIZE(uniphier_pro5_functions),
1322 .load_pinctrl = true, 1358 .caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE,
1323};
1324
1325static struct pinctrl_desc ph1_pro5_pinctrl_desc = {
1326 .name = DRIVER_NAME,
1327 .pins = ph1_pro5_pins,
1328 .npins = ARRAY_SIZE(ph1_pro5_pins),
1329 .owner = THIS_MODULE,
1330}; 1359};
1331 1360
1332static int ph1_pro5_pinctrl_probe(struct platform_device *pdev) 1361static int uniphier_pro5_pinctrl_probe(struct platform_device *pdev)
1333{ 1362{
1334 return uniphier_pinctrl_probe(pdev, &ph1_pro5_pinctrl_desc, 1363 return uniphier_pinctrl_probe(pdev, &uniphier_pro5_pindata);
1335 &ph1_pro5_pindata);
1336} 1364}
1337 1365
1338static const struct of_device_id ph1_pro5_pinctrl_match[] = { 1366static const struct of_device_id uniphier_pro5_pinctrl_match[] = {
1367 { .compatible = "socionext,uniphier-pro5-pinctrl" },
1339 { .compatible = "socionext,ph1-pro5-pinctrl" }, 1368 { .compatible = "socionext,ph1-pro5-pinctrl" },
1340 { /* sentinel */ } 1369 { /* sentinel */ }
1341}; 1370};
1342MODULE_DEVICE_TABLE(of, ph1_pro5_pinctrl_match); 1371MODULE_DEVICE_TABLE(of, uniphier_pro5_pinctrl_match);
1343 1372
1344static struct platform_driver ph1_pro5_pinctrl_driver = { 1373static struct platform_driver uniphier_pro5_pinctrl_driver = {
1345 .probe = ph1_pro5_pinctrl_probe, 1374 .probe = uniphier_pro5_pinctrl_probe,
1346 .driver = { 1375 .driver = {
1347 .name = DRIVER_NAME, 1376 .name = "uniphier-pro5-pinctrl",
1348 .of_match_table = ph1_pro5_pinctrl_match, 1377 .of_match_table = uniphier_pro5_pinctrl_match,
1349 }, 1378 },
1350}; 1379};
1351module_platform_driver(ph1_pro5_pinctrl_driver); 1380module_platform_driver(uniphier_pro5_pinctrl_driver);
1352 1381
1353MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1382MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
1354MODULE_DESCRIPTION("UniPhier PH1-Pro5 pinctrl driver"); 1383MODULE_DESCRIPTION("UniPhier PH1-Pro5 pinctrl driver");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
index e868030ff31c..85ca5e2d8a9c 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
@@ -19,760 +19,776 @@
19 19
20#include "pinctrl-uniphier.h" 20#include "pinctrl-uniphier.h"
21 21
22#define DRIVER_NAME "proxstream2-pinctrl" 22static const struct pinctrl_pin_desc uniphier_pxs2_pins[] = {
23
24static const struct pinctrl_pin_desc proxstream2_pins[] = {
25 UNIPHIER_PINCTRL_PIN(0, "ED0", UNIPHIER_PIN_IECTRL_NONE, 23 UNIPHIER_PINCTRL_PIN(0, "ED0", UNIPHIER_PIN_IECTRL_NONE,
26 0, UNIPHIER_PIN_DRV_4_8, 24 0, UNIPHIER_PIN_DRV_1BIT,
27 0, UNIPHIER_PIN_PULL_DOWN), 25 0, UNIPHIER_PIN_PULL_DOWN),
28 UNIPHIER_PINCTRL_PIN(1, "ED1", UNIPHIER_PIN_IECTRL_NONE, 26 UNIPHIER_PINCTRL_PIN(1, "ED1", UNIPHIER_PIN_IECTRL_NONE,
29 1, UNIPHIER_PIN_DRV_4_8, 27 1, UNIPHIER_PIN_DRV_1BIT,
30 1, UNIPHIER_PIN_PULL_DOWN), 28 1, UNIPHIER_PIN_PULL_DOWN),
31 UNIPHIER_PINCTRL_PIN(2, "ED2", UNIPHIER_PIN_IECTRL_NONE, 29 UNIPHIER_PINCTRL_PIN(2, "ED2", UNIPHIER_PIN_IECTRL_NONE,
32 2, UNIPHIER_PIN_DRV_4_8, 30 2, UNIPHIER_PIN_DRV_1BIT,
33 2, UNIPHIER_PIN_PULL_DOWN), 31 2, UNIPHIER_PIN_PULL_DOWN),
34 UNIPHIER_PINCTRL_PIN(3, "ED3", UNIPHIER_PIN_IECTRL_NONE, 32 UNIPHIER_PINCTRL_PIN(3, "ED3", UNIPHIER_PIN_IECTRL_NONE,
35 3, UNIPHIER_PIN_DRV_4_8, 33 3, UNIPHIER_PIN_DRV_1BIT,
36 3, UNIPHIER_PIN_PULL_DOWN), 34 3, UNIPHIER_PIN_PULL_DOWN),
37 UNIPHIER_PINCTRL_PIN(4, "ED4", UNIPHIER_PIN_IECTRL_NONE, 35 UNIPHIER_PINCTRL_PIN(4, "ED4", UNIPHIER_PIN_IECTRL_NONE,
38 4, UNIPHIER_PIN_DRV_4_8, 36 4, UNIPHIER_PIN_DRV_1BIT,
39 4, UNIPHIER_PIN_PULL_DOWN), 37 4, UNIPHIER_PIN_PULL_DOWN),
40 UNIPHIER_PINCTRL_PIN(5, "ED5", UNIPHIER_PIN_IECTRL_NONE, 38 UNIPHIER_PINCTRL_PIN(5, "ED5", UNIPHIER_PIN_IECTRL_NONE,
41 5, UNIPHIER_PIN_DRV_4_8, 39 5, UNIPHIER_PIN_DRV_1BIT,
42 5, UNIPHIER_PIN_PULL_DOWN), 40 5, UNIPHIER_PIN_PULL_DOWN),
43 UNIPHIER_PINCTRL_PIN(6, "ED6", UNIPHIER_PIN_IECTRL_NONE, 41 UNIPHIER_PINCTRL_PIN(6, "ED6", UNIPHIER_PIN_IECTRL_NONE,
44 6, UNIPHIER_PIN_DRV_4_8, 42 6, UNIPHIER_PIN_DRV_1BIT,
45 6, UNIPHIER_PIN_PULL_DOWN), 43 6, UNIPHIER_PIN_PULL_DOWN),
46 UNIPHIER_PINCTRL_PIN(7, "ED7", UNIPHIER_PIN_IECTRL_NONE, 44 UNIPHIER_PINCTRL_PIN(7, "ED7", UNIPHIER_PIN_IECTRL_NONE,
47 7, UNIPHIER_PIN_DRV_4_8, 45 7, UNIPHIER_PIN_DRV_1BIT,
48 7, UNIPHIER_PIN_PULL_DOWN), 46 7, UNIPHIER_PIN_PULL_DOWN),
49 UNIPHIER_PINCTRL_PIN(8, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 47 UNIPHIER_PINCTRL_PIN(8, "XERWE0", UNIPHIER_PIN_IECTRL_NONE,
50 8, UNIPHIER_PIN_DRV_4_8, 48 8, UNIPHIER_PIN_DRV_1BIT,
51 8, UNIPHIER_PIN_PULL_DOWN), 49 8, UNIPHIER_PIN_PULL_DOWN),
52 UNIPHIER_PINCTRL_PIN(9, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 50 UNIPHIER_PINCTRL_PIN(9, "XERWE1", UNIPHIER_PIN_IECTRL_NONE,
53 9, UNIPHIER_PIN_DRV_4_8, 51 9, UNIPHIER_PIN_DRV_1BIT,
54 9, UNIPHIER_PIN_PULL_DOWN), 52 9, UNIPHIER_PIN_PULL_DOWN),
55 UNIPHIER_PINCTRL_PIN(10, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 53 UNIPHIER_PINCTRL_PIN(10, "ERXW", UNIPHIER_PIN_IECTRL_NONE,
56 10, UNIPHIER_PIN_DRV_4_8, 54 10, UNIPHIER_PIN_DRV_1BIT,
57 10, UNIPHIER_PIN_PULL_DOWN), 55 10, UNIPHIER_PIN_PULL_DOWN),
58 UNIPHIER_PINCTRL_PIN(11, "ES0", UNIPHIER_PIN_IECTRL_NONE, 56 UNIPHIER_PINCTRL_PIN(11, "ES0", UNIPHIER_PIN_IECTRL_NONE,
59 11, UNIPHIER_PIN_DRV_4_8, 57 11, UNIPHIER_PIN_DRV_1BIT,
60 11, UNIPHIER_PIN_PULL_DOWN), 58 11, UNIPHIER_PIN_PULL_DOWN),
61 UNIPHIER_PINCTRL_PIN(12, "ES1", UNIPHIER_PIN_IECTRL_NONE, 59 UNIPHIER_PINCTRL_PIN(12, "ES1", UNIPHIER_PIN_IECTRL_NONE,
62 12, UNIPHIER_PIN_DRV_4_8, 60 12, UNIPHIER_PIN_DRV_1BIT,
63 12, UNIPHIER_PIN_PULL_DOWN), 61 12, UNIPHIER_PIN_PULL_DOWN),
64 UNIPHIER_PINCTRL_PIN(13, "ES2", UNIPHIER_PIN_IECTRL_NONE, 62 UNIPHIER_PINCTRL_PIN(13, "ES2", UNIPHIER_PIN_IECTRL_NONE,
65 13, UNIPHIER_PIN_DRV_4_8, 63 13, UNIPHIER_PIN_DRV_1BIT,
66 13, UNIPHIER_PIN_PULL_DOWN), 64 13, UNIPHIER_PIN_PULL_DOWN),
67 UNIPHIER_PINCTRL_PIN(14, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 65 UNIPHIER_PINCTRL_PIN(14, "XECS1", UNIPHIER_PIN_IECTRL_NONE,
68 14, UNIPHIER_PIN_DRV_4_8, 66 14, UNIPHIER_PIN_DRV_1BIT,
69 14, UNIPHIER_PIN_PULL_DOWN), 67 14, UNIPHIER_PIN_PULL_DOWN),
70 UNIPHIER_PINCTRL_PIN(15, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE, 68 UNIPHIER_PINCTRL_PIN(15, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE,
71 -1, UNIPHIER_PIN_DRV_FIXED_8, 69 -1, UNIPHIER_PIN_DRV_FIXED8,
72 15, UNIPHIER_PIN_PULL_DOWN), 70 15, UNIPHIER_PIN_PULL_DOWN),
73 UNIPHIER_PINCTRL_PIN(16, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE, 71 UNIPHIER_PINCTRL_PIN(16, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE,
74 -1, UNIPHIER_PIN_DRV_FIXED_8, 72 -1, UNIPHIER_PIN_DRV_FIXED8,
75 16, UNIPHIER_PIN_PULL_DOWN), 73 16, UNIPHIER_PIN_PULL_DOWN),
76 UNIPHIER_PINCTRL_PIN(17, "SMTD0", UNIPHIER_PIN_IECTRL_NONE, 74 UNIPHIER_PINCTRL_PIN(17, "SMTD0", UNIPHIER_PIN_IECTRL_NONE,
77 -1, UNIPHIER_PIN_DRV_FIXED_8, 75 -1, UNIPHIER_PIN_DRV_FIXED8,
78 17, UNIPHIER_PIN_PULL_DOWN), 76 17, UNIPHIER_PIN_PULL_DOWN),
79 UNIPHIER_PINCTRL_PIN(18, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE, 77 UNIPHIER_PINCTRL_PIN(18, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE,
80 -1, UNIPHIER_PIN_DRV_FIXED_8, 78 -1, UNIPHIER_PIN_DRV_FIXED8,
81 18, UNIPHIER_PIN_PULL_DOWN), 79 18, UNIPHIER_PIN_PULL_DOWN),
82 UNIPHIER_PINCTRL_PIN(19, "SMTCLK0CG", UNIPHIER_PIN_IECTRL_NONE, 80 UNIPHIER_PINCTRL_PIN(19, "SMTCLK0CG", UNIPHIER_PIN_IECTRL_NONE,
83 -1, UNIPHIER_PIN_DRV_FIXED_8, 81 -1, UNIPHIER_PIN_DRV_FIXED8,
84 19, UNIPHIER_PIN_PULL_DOWN), 82 19, UNIPHIER_PIN_PULL_DOWN),
85 UNIPHIER_PINCTRL_PIN(20, "SMTDET0", UNIPHIER_PIN_IECTRL_NONE, 83 UNIPHIER_PINCTRL_PIN(20, "SMTDET0", UNIPHIER_PIN_IECTRL_NONE,
86 -1, UNIPHIER_PIN_DRV_FIXED_8, 84 -1, UNIPHIER_PIN_DRV_FIXED8,
87 20, UNIPHIER_PIN_PULL_DOWN), 85 20, UNIPHIER_PIN_PULL_DOWN),
88 UNIPHIER_PINCTRL_PIN(21, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE, 86 UNIPHIER_PINCTRL_PIN(21, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE,
89 -1, UNIPHIER_PIN_DRV_FIXED_8, 87 -1, UNIPHIER_PIN_DRV_FIXED8,
90 21, UNIPHIER_PIN_PULL_DOWN), 88 21, UNIPHIER_PIN_PULL_DOWN),
91 UNIPHIER_PINCTRL_PIN(22, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE, 89 UNIPHIER_PINCTRL_PIN(22, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE,
92 -1, UNIPHIER_PIN_DRV_FIXED_8, 90 -1, UNIPHIER_PIN_DRV_FIXED8,
93 22, UNIPHIER_PIN_PULL_DOWN), 91 22, UNIPHIER_PIN_PULL_DOWN),
94 UNIPHIER_PINCTRL_PIN(23, "SMTD1", UNIPHIER_PIN_IECTRL_NONE, 92 UNIPHIER_PINCTRL_PIN(23, "SMTD1", UNIPHIER_PIN_IECTRL_NONE,
95 -1, UNIPHIER_PIN_DRV_FIXED_8, 93 -1, UNIPHIER_PIN_DRV_FIXED8,
96 23, UNIPHIER_PIN_PULL_DOWN), 94 23, UNIPHIER_PIN_PULL_DOWN),
97 UNIPHIER_PINCTRL_PIN(24, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE, 95 UNIPHIER_PINCTRL_PIN(24, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE,
98 -1, UNIPHIER_PIN_DRV_FIXED_8, 96 -1, UNIPHIER_PIN_DRV_FIXED8,
99 24, UNIPHIER_PIN_PULL_DOWN), 97 24, UNIPHIER_PIN_PULL_DOWN),
100 UNIPHIER_PINCTRL_PIN(25, "SMTCLK1CG", UNIPHIER_PIN_IECTRL_NONE, 98 UNIPHIER_PINCTRL_PIN(25, "SMTCLK1CG", UNIPHIER_PIN_IECTRL_NONE,
101 -1, UNIPHIER_PIN_DRV_FIXED_8, 99 -1, UNIPHIER_PIN_DRV_FIXED8,
102 25, UNIPHIER_PIN_PULL_DOWN), 100 25, UNIPHIER_PIN_PULL_DOWN),
103 UNIPHIER_PINCTRL_PIN(26, "SMTDET1", UNIPHIER_PIN_IECTRL_NONE, 101 UNIPHIER_PINCTRL_PIN(26, "SMTDET1", UNIPHIER_PIN_IECTRL_NONE,
104 -1, UNIPHIER_PIN_DRV_FIXED_8, 102 -1, UNIPHIER_PIN_DRV_FIXED8,
105 26, UNIPHIER_PIN_PULL_DOWN), 103 26, UNIPHIER_PIN_PULL_DOWN),
106 UNIPHIER_PINCTRL_PIN(27, "XIRQ18", UNIPHIER_PIN_IECTRL_NONE, 104 UNIPHIER_PINCTRL_PIN(27, "XIRQ18", UNIPHIER_PIN_IECTRL_NONE,
107 -1, UNIPHIER_PIN_DRV_FIXED_8, 105 -1, UNIPHIER_PIN_DRV_FIXED8,
108 27, UNIPHIER_PIN_PULL_DOWN), 106 27, UNIPHIER_PIN_PULL_DOWN),
109 UNIPHIER_PINCTRL_PIN(28, "XIRQ19", UNIPHIER_PIN_IECTRL_NONE, 107 UNIPHIER_PINCTRL_PIN(28, "XIRQ19", UNIPHIER_PIN_IECTRL_NONE,
110 -1, UNIPHIER_PIN_DRV_FIXED_8, 108 -1, UNIPHIER_PIN_DRV_FIXED8,
111 28, UNIPHIER_PIN_PULL_DOWN), 109 28, UNIPHIER_PIN_PULL_DOWN),
112 UNIPHIER_PINCTRL_PIN(29, "XIRQ20", UNIPHIER_PIN_IECTRL_NONE, 110 UNIPHIER_PINCTRL_PIN(29, "XIRQ20", UNIPHIER_PIN_IECTRL_NONE,
113 -1, UNIPHIER_PIN_DRV_FIXED_8, 111 -1, UNIPHIER_PIN_DRV_FIXED8,
114 29, UNIPHIER_PIN_PULL_DOWN), 112 29, UNIPHIER_PIN_PULL_DOWN),
115 UNIPHIER_PINCTRL_PIN(30, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 113 UNIPHIER_PINCTRL_PIN(30, "XNFRE", UNIPHIER_PIN_IECTRL_NONE,
116 30, UNIPHIER_PIN_DRV_4_8, 114 30, UNIPHIER_PIN_DRV_1BIT,
117 30, UNIPHIER_PIN_PULL_UP), 115 30, UNIPHIER_PIN_PULL_UP),
118 UNIPHIER_PINCTRL_PIN(31, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 116 UNIPHIER_PINCTRL_PIN(31, "XNFWE", UNIPHIER_PIN_IECTRL_NONE,
119 31, UNIPHIER_PIN_DRV_4_8, 117 31, UNIPHIER_PIN_DRV_1BIT,
120 31, UNIPHIER_PIN_PULL_UP), 118 31, UNIPHIER_PIN_PULL_UP),
121 UNIPHIER_PINCTRL_PIN(32, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 119 UNIPHIER_PINCTRL_PIN(32, "NFALE", UNIPHIER_PIN_IECTRL_NONE,
122 32, UNIPHIER_PIN_DRV_4_8, 120 32, UNIPHIER_PIN_DRV_1BIT,
123 32, UNIPHIER_PIN_PULL_DOWN), 121 32, UNIPHIER_PIN_PULL_DOWN),
124 UNIPHIER_PINCTRL_PIN(33, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 122 UNIPHIER_PINCTRL_PIN(33, "NFCLE", UNIPHIER_PIN_IECTRL_NONE,
125 33, UNIPHIER_PIN_DRV_4_8, 123 33, UNIPHIER_PIN_DRV_1BIT,
126 33, UNIPHIER_PIN_PULL_DOWN), 124 33, UNIPHIER_PIN_PULL_DOWN),
127 UNIPHIER_PINCTRL_PIN(34, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 125 UNIPHIER_PINCTRL_PIN(34, "XNFWP", UNIPHIER_PIN_IECTRL_NONE,
128 34, UNIPHIER_PIN_DRV_4_8, 126 34, UNIPHIER_PIN_DRV_1BIT,
129 34, UNIPHIER_PIN_PULL_DOWN), 127 34, UNIPHIER_PIN_PULL_DOWN),
130 UNIPHIER_PINCTRL_PIN(35, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 128 UNIPHIER_PINCTRL_PIN(35, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE,
131 35, UNIPHIER_PIN_DRV_4_8, 129 35, UNIPHIER_PIN_DRV_1BIT,
132 35, UNIPHIER_PIN_PULL_UP), 130 35, UNIPHIER_PIN_PULL_UP),
133 UNIPHIER_PINCTRL_PIN(36, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE, 131 UNIPHIER_PINCTRL_PIN(36, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE,
134 36, UNIPHIER_PIN_DRV_4_8, 132 36, UNIPHIER_PIN_DRV_1BIT,
135 36, UNIPHIER_PIN_PULL_UP), 133 36, UNIPHIER_PIN_PULL_UP),
136 UNIPHIER_PINCTRL_PIN(37, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE, 134 UNIPHIER_PINCTRL_PIN(37, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE,
137 37, UNIPHIER_PIN_DRV_4_8, 135 37, UNIPHIER_PIN_DRV_1BIT,
138 37, UNIPHIER_PIN_PULL_UP), 136 37, UNIPHIER_PIN_PULL_UP),
139 UNIPHIER_PINCTRL_PIN(38, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE, 137 UNIPHIER_PINCTRL_PIN(38, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE,
140 38, UNIPHIER_PIN_DRV_4_8, 138 38, UNIPHIER_PIN_DRV_1BIT,
141 38, UNIPHIER_PIN_PULL_UP), 139 38, UNIPHIER_PIN_PULL_UP),
142 UNIPHIER_PINCTRL_PIN(39, "NFD0", UNIPHIER_PIN_IECTRL_NONE, 140 UNIPHIER_PINCTRL_PIN(39, "NFD0", UNIPHIER_PIN_IECTRL_NONE,
143 39, UNIPHIER_PIN_DRV_4_8, 141 39, UNIPHIER_PIN_DRV_1BIT,
144 39, UNIPHIER_PIN_PULL_DOWN), 142 39, UNIPHIER_PIN_PULL_DOWN),
145 UNIPHIER_PINCTRL_PIN(40, "NFD1", UNIPHIER_PIN_IECTRL_NONE, 143 UNIPHIER_PINCTRL_PIN(40, "NFD1", UNIPHIER_PIN_IECTRL_NONE,
146 40, UNIPHIER_PIN_DRV_4_8, 144 40, UNIPHIER_PIN_DRV_1BIT,
147 40, UNIPHIER_PIN_PULL_DOWN), 145 40, UNIPHIER_PIN_PULL_DOWN),
148 UNIPHIER_PINCTRL_PIN(41, "NFD2", UNIPHIER_PIN_IECTRL_NONE, 146 UNIPHIER_PINCTRL_PIN(41, "NFD2", UNIPHIER_PIN_IECTRL_NONE,
149 41, UNIPHIER_PIN_DRV_4_8, 147 41, UNIPHIER_PIN_DRV_1BIT,
150 41, UNIPHIER_PIN_PULL_DOWN), 148 41, UNIPHIER_PIN_PULL_DOWN),
151 UNIPHIER_PINCTRL_PIN(42, "NFD3", UNIPHIER_PIN_IECTRL_NONE, 149 UNIPHIER_PINCTRL_PIN(42, "NFD3", UNIPHIER_PIN_IECTRL_NONE,
152 42, UNIPHIER_PIN_DRV_4_8, 150 42, UNIPHIER_PIN_DRV_1BIT,
153 42, UNIPHIER_PIN_PULL_DOWN), 151 42, UNIPHIER_PIN_PULL_DOWN),
154 UNIPHIER_PINCTRL_PIN(43, "NFD4", UNIPHIER_PIN_IECTRL_NONE, 152 UNIPHIER_PINCTRL_PIN(43, "NFD4", UNIPHIER_PIN_IECTRL_NONE,
155 43, UNIPHIER_PIN_DRV_4_8, 153 43, UNIPHIER_PIN_DRV_1BIT,
156 43, UNIPHIER_PIN_PULL_DOWN), 154 43, UNIPHIER_PIN_PULL_DOWN),
157 UNIPHIER_PINCTRL_PIN(44, "NFD5", UNIPHIER_PIN_IECTRL_NONE, 155 UNIPHIER_PINCTRL_PIN(44, "NFD5", UNIPHIER_PIN_IECTRL_NONE,
158 44, UNIPHIER_PIN_DRV_4_8, 156 44, UNIPHIER_PIN_DRV_1BIT,
159 44, UNIPHIER_PIN_PULL_DOWN), 157 44, UNIPHIER_PIN_PULL_DOWN),
160 UNIPHIER_PINCTRL_PIN(45, "NFD6", UNIPHIER_PIN_IECTRL_NONE, 158 UNIPHIER_PINCTRL_PIN(45, "NFD6", UNIPHIER_PIN_IECTRL_NONE,
161 45, UNIPHIER_PIN_DRV_4_8, 159 45, UNIPHIER_PIN_DRV_1BIT,
162 45, UNIPHIER_PIN_PULL_DOWN), 160 45, UNIPHIER_PIN_PULL_DOWN),
163 UNIPHIER_PINCTRL_PIN(46, "NFD7", UNIPHIER_PIN_IECTRL_NONE, 161 UNIPHIER_PINCTRL_PIN(46, "NFD7", UNIPHIER_PIN_IECTRL_NONE,
164 46, UNIPHIER_PIN_DRV_4_8, 162 46, UNIPHIER_PIN_DRV_1BIT,
165 46, UNIPHIER_PIN_PULL_DOWN), 163 46, UNIPHIER_PIN_PULL_DOWN),
166 UNIPHIER_PINCTRL_PIN(47, "SDCLK", UNIPHIER_PIN_IECTRL_NONE, 164 UNIPHIER_PINCTRL_PIN(47, "SDCLK", UNIPHIER_PIN_IECTRL_NONE,
167 0, UNIPHIER_PIN_DRV_8_12_16_20, 165 0, UNIPHIER_PIN_DRV_2BIT,
168 -1, UNIPHIER_PIN_PULL_UP_FIXED), 166 -1, UNIPHIER_PIN_PULL_UP_FIXED),
169 UNIPHIER_PINCTRL_PIN(48, "SDCMD", UNIPHIER_PIN_IECTRL_NONE, 167 UNIPHIER_PINCTRL_PIN(48, "SDCMD", UNIPHIER_PIN_IECTRL_NONE,
170 4, UNIPHIER_PIN_DRV_8_12_16_20, 168 1, UNIPHIER_PIN_DRV_2BIT,
171 -1, UNIPHIER_PIN_PULL_UP_FIXED), 169 -1, UNIPHIER_PIN_PULL_UP_FIXED),
172 UNIPHIER_PINCTRL_PIN(49, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE, 170 UNIPHIER_PINCTRL_PIN(49, "SDDAT0", UNIPHIER_PIN_IECTRL_NONE,
173 8, UNIPHIER_PIN_DRV_8_12_16_20, 171 2, UNIPHIER_PIN_DRV_2BIT,
174 -1, UNIPHIER_PIN_PULL_UP_FIXED), 172 -1, UNIPHIER_PIN_PULL_UP_FIXED),
175 UNIPHIER_PINCTRL_PIN(50, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE, 173 UNIPHIER_PINCTRL_PIN(50, "SDDAT1", UNIPHIER_PIN_IECTRL_NONE,
176 12, UNIPHIER_PIN_DRV_8_12_16_20, 174 3, UNIPHIER_PIN_DRV_2BIT,
177 -1, UNIPHIER_PIN_PULL_UP_FIXED), 175 -1, UNIPHIER_PIN_PULL_UP_FIXED),
178 UNIPHIER_PINCTRL_PIN(51, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE, 176 UNIPHIER_PINCTRL_PIN(51, "SDDAT2", UNIPHIER_PIN_IECTRL_NONE,
179 16, UNIPHIER_PIN_DRV_8_12_16_20, 177 4, UNIPHIER_PIN_DRV_2BIT,
180 -1, UNIPHIER_PIN_PULL_UP_FIXED), 178 -1, UNIPHIER_PIN_PULL_UP_FIXED),
181 UNIPHIER_PINCTRL_PIN(52, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE, 179 UNIPHIER_PINCTRL_PIN(52, "SDDAT3", UNIPHIER_PIN_IECTRL_NONE,
182 20, UNIPHIER_PIN_DRV_8_12_16_20, 180 5, UNIPHIER_PIN_DRV_2BIT,
183 -1, UNIPHIER_PIN_PULL_UP_FIXED), 181 -1, UNIPHIER_PIN_PULL_UP_FIXED),
184 UNIPHIER_PINCTRL_PIN(53, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 182 UNIPHIER_PINCTRL_PIN(53, "SDCD", UNIPHIER_PIN_IECTRL_NONE,
185 -1, UNIPHIER_PIN_DRV_FIXED_8, 183 -1, UNIPHIER_PIN_DRV_FIXED8,
186 53, UNIPHIER_PIN_PULL_DOWN), 184 53, UNIPHIER_PIN_PULL_DOWN),
187 UNIPHIER_PINCTRL_PIN(54, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 185 UNIPHIER_PINCTRL_PIN(54, "SDWP", UNIPHIER_PIN_IECTRL_NONE,
188 -1, UNIPHIER_PIN_DRV_FIXED_8, 186 -1, UNIPHIER_PIN_DRV_FIXED8,
189 54, UNIPHIER_PIN_PULL_DOWN), 187 54, UNIPHIER_PIN_PULL_DOWN),
190 UNIPHIER_PINCTRL_PIN(55, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 188 UNIPHIER_PINCTRL_PIN(55, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE,
191 -1, UNIPHIER_PIN_DRV_FIXED_8, 189 -1, UNIPHIER_PIN_DRV_FIXED8,
192 55, UNIPHIER_PIN_PULL_DOWN), 190 55, UNIPHIER_PIN_PULL_DOWN),
193 UNIPHIER_PINCTRL_PIN(56, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 191 UNIPHIER_PINCTRL_PIN(56, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE,
194 -1, UNIPHIER_PIN_DRV_FIXED_8, 192 -1, UNIPHIER_PIN_DRV_FIXED8,
195 56, UNIPHIER_PIN_PULL_DOWN), 193 56, UNIPHIER_PIN_PULL_DOWN),
196 UNIPHIER_PINCTRL_PIN(57, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 194 UNIPHIER_PINCTRL_PIN(57, "USB0OD", UNIPHIER_PIN_IECTRL_NONE,
197 -1, UNIPHIER_PIN_DRV_FIXED_8, 195 -1, UNIPHIER_PIN_DRV_FIXED8,
198 57, UNIPHIER_PIN_PULL_DOWN), 196 57, UNIPHIER_PIN_PULL_DOWN),
199 UNIPHIER_PINCTRL_PIN(58, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 197 UNIPHIER_PINCTRL_PIN(58, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE,
200 -1, UNIPHIER_PIN_DRV_FIXED_8, 198 -1, UNIPHIER_PIN_DRV_FIXED8,
201 58, UNIPHIER_PIN_PULL_DOWN), 199 58, UNIPHIER_PIN_PULL_DOWN),
202 UNIPHIER_PINCTRL_PIN(59, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 200 UNIPHIER_PINCTRL_PIN(59, "USB1OD", UNIPHIER_PIN_IECTRL_NONE,
203 -1, UNIPHIER_PIN_DRV_FIXED_8, 201 -1, UNIPHIER_PIN_DRV_FIXED8,
204 59, UNIPHIER_PIN_PULL_DOWN), 202 59, UNIPHIER_PIN_PULL_DOWN),
205 UNIPHIER_PINCTRL_PIN(60, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 203 UNIPHIER_PINCTRL_PIN(60, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE,
206 -1, UNIPHIER_PIN_DRV_FIXED_8, 204 -1, UNIPHIER_PIN_DRV_FIXED8,
207 60, UNIPHIER_PIN_PULL_DOWN), 205 60, UNIPHIER_PIN_PULL_DOWN),
208 UNIPHIER_PINCTRL_PIN(61, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 206 UNIPHIER_PINCTRL_PIN(61, "USB2OD", UNIPHIER_PIN_IECTRL_NONE,
209 -1, UNIPHIER_PIN_DRV_FIXED_8, 207 -1, UNIPHIER_PIN_DRV_FIXED8,
210 61, UNIPHIER_PIN_PULL_DOWN), 208 61, UNIPHIER_PIN_PULL_DOWN),
211 UNIPHIER_PINCTRL_PIN(62, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE, 209 UNIPHIER_PINCTRL_PIN(62, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE,
212 -1, UNIPHIER_PIN_DRV_FIXED_8, 210 -1, UNIPHIER_PIN_DRV_FIXED8,
213 62, UNIPHIER_PIN_PULL_DOWN), 211 62, UNIPHIER_PIN_PULL_DOWN),
214 UNIPHIER_PINCTRL_PIN(63, "USB3OD", UNIPHIER_PIN_IECTRL_NONE, 212 UNIPHIER_PINCTRL_PIN(63, "USB3OD", UNIPHIER_PIN_IECTRL_NONE,
215 -1, UNIPHIER_PIN_DRV_FIXED_8, 213 -1, UNIPHIER_PIN_DRV_FIXED8,
216 63, UNIPHIER_PIN_PULL_DOWN), 214 63, UNIPHIER_PIN_PULL_DOWN),
217 UNIPHIER_PINCTRL_PIN(64, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE, 215 UNIPHIER_PINCTRL_PIN(64, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE,
218 -1, UNIPHIER_PIN_DRV_FIXED_8, 216 -1, UNIPHIER_PIN_DRV_FIXED8,
219 64, UNIPHIER_PIN_PULL_DOWN), 217 64, UNIPHIER_PIN_PULL_DOWN),
220 UNIPHIER_PINCTRL_PIN(65, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE, 218 UNIPHIER_PINCTRL_PIN(65, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE,
221 -1, UNIPHIER_PIN_DRV_FIXED_8, 219 -1, UNIPHIER_PIN_DRV_FIXED8,
222 65, UNIPHIER_PIN_PULL_DOWN), 220 65, UNIPHIER_PIN_PULL_DOWN),
223 UNIPHIER_PINCTRL_PIN(66, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE, 221 UNIPHIER_PINCTRL_PIN(66, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE,
224 -1, UNIPHIER_PIN_DRV_FIXED_8, 222 -1, UNIPHIER_PIN_DRV_FIXED8,
225 66, UNIPHIER_PIN_PULL_DOWN), 223 66, UNIPHIER_PIN_PULL_DOWN),
226 UNIPHIER_PINCTRL_PIN(67, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE, 224 UNIPHIER_PINCTRL_PIN(67, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE,
227 -1, UNIPHIER_PIN_DRV_FIXED_8, 225 -1, UNIPHIER_PIN_DRV_FIXED8,
228 67, UNIPHIER_PIN_PULL_DOWN), 226 67, UNIPHIER_PIN_PULL_DOWN),
229 UNIPHIER_PINCTRL_PIN(68, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE, 227 UNIPHIER_PINCTRL_PIN(68, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE,
230 -1, UNIPHIER_PIN_DRV_FIXED_8, 228 -1, UNIPHIER_PIN_DRV_FIXED8,
231 68, UNIPHIER_PIN_PULL_DOWN), 229 68, UNIPHIER_PIN_PULL_DOWN),
232 UNIPHIER_PINCTRL_PIN(69, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE, 230 UNIPHIER_PINCTRL_PIN(69, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE,
233 -1, UNIPHIER_PIN_DRV_FIXED_8, 231 -1, UNIPHIER_PIN_DRV_FIXED8,
234 69, UNIPHIER_PIN_PULL_DOWN), 232 69, UNIPHIER_PIN_PULL_DOWN),
235 UNIPHIER_PINCTRL_PIN(70, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE, 233 UNIPHIER_PINCTRL_PIN(70, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE,
236 -1, UNIPHIER_PIN_DRV_FIXED_8, 234 -1, UNIPHIER_PIN_DRV_FIXED8,
237 70, UNIPHIER_PIN_PULL_DOWN), 235 70, UNIPHIER_PIN_PULL_DOWN),
238 UNIPHIER_PINCTRL_PIN(71, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE, 236 UNIPHIER_PINCTRL_PIN(71, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE,
239 -1, UNIPHIER_PIN_DRV_FIXED_8, 237 -1, UNIPHIER_PIN_DRV_FIXED8,
240 71, UNIPHIER_PIN_PULL_DOWN), 238 71, UNIPHIER_PIN_PULL_DOWN),
241 UNIPHIER_PINCTRL_PIN(72, "XIRQ9", UNIPHIER_PIN_IECTRL_NONE, 239 UNIPHIER_PINCTRL_PIN(72, "XIRQ9", UNIPHIER_PIN_IECTRL_NONE,
242 -1, UNIPHIER_PIN_DRV_FIXED_8, 240 -1, UNIPHIER_PIN_DRV_FIXED8,
243 72, UNIPHIER_PIN_PULL_DOWN), 241 72, UNIPHIER_PIN_PULL_DOWN),
244 UNIPHIER_PINCTRL_PIN(73, "XIRQ10", UNIPHIER_PIN_IECTRL_NONE, 242 UNIPHIER_PINCTRL_PIN(73, "XIRQ10", UNIPHIER_PIN_IECTRL_NONE,
245 -1, UNIPHIER_PIN_DRV_FIXED_8, 243 -1, UNIPHIER_PIN_DRV_FIXED8,
246 73, UNIPHIER_PIN_PULL_DOWN), 244 73, UNIPHIER_PIN_PULL_DOWN),
247 UNIPHIER_PINCTRL_PIN(74, "XIRQ16", UNIPHIER_PIN_IECTRL_NONE, 245 UNIPHIER_PINCTRL_PIN(74, "XIRQ16", UNIPHIER_PIN_IECTRL_NONE,
248 -1, UNIPHIER_PIN_DRV_FIXED_8, 246 -1, UNIPHIER_PIN_DRV_FIXED8,
249 74, UNIPHIER_PIN_PULL_DOWN), 247 74, UNIPHIER_PIN_PULL_DOWN),
250 UNIPHIER_PINCTRL_PIN(75, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE, 248 UNIPHIER_PINCTRL_PIN(75, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE,
251 -1, UNIPHIER_PIN_DRV_FIXED_8, 249 -1, UNIPHIER_PIN_DRV_FIXED8,
252 75, UNIPHIER_PIN_PULL_DOWN), 250 75, UNIPHIER_PIN_PULL_DOWN),
253 UNIPHIER_PINCTRL_PIN(76, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE, 251 UNIPHIER_PINCTRL_PIN(76, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE,
254 -1, UNIPHIER_PIN_DRV_FIXED_8, 252 -1, UNIPHIER_PIN_DRV_FIXED8,
255 76, UNIPHIER_PIN_PULL_DOWN), 253 76, UNIPHIER_PIN_PULL_DOWN),
256 UNIPHIER_PINCTRL_PIN(77, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE, 254 UNIPHIER_PINCTRL_PIN(77, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE,
257 -1, UNIPHIER_PIN_DRV_FIXED_8, 255 -1, UNIPHIER_PIN_DRV_FIXED8,
258 77, UNIPHIER_PIN_PULL_DOWN), 256 77, UNIPHIER_PIN_PULL_DOWN),
259 UNIPHIER_PINCTRL_PIN(78, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE, 257 UNIPHIER_PINCTRL_PIN(78, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE,
260 -1, UNIPHIER_PIN_DRV_FIXED_8, 258 -1, UNIPHIER_PIN_DRV_FIXED8,
261 78, UNIPHIER_PIN_PULL_DOWN), 259 78, UNIPHIER_PIN_PULL_DOWN),
262 UNIPHIER_PINCTRL_PIN(79, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE, 260 UNIPHIER_PINCTRL_PIN(79, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE,
263 -1, UNIPHIER_PIN_DRV_FIXED_8, 261 -1, UNIPHIER_PIN_DRV_FIXED8,
264 79, UNIPHIER_PIN_PULL_DOWN), 262 79, UNIPHIER_PIN_PULL_DOWN),
265 UNIPHIER_PINCTRL_PIN(80, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE, 263 UNIPHIER_PINCTRL_PIN(80, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE,
266 -1, UNIPHIER_PIN_DRV_FIXED_8, 264 -1, UNIPHIER_PIN_DRV_FIXED8,
267 80, UNIPHIER_PIN_PULL_DOWN), 265 80, UNIPHIER_PIN_PULL_DOWN),
268 UNIPHIER_PINCTRL_PIN(81, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE, 266 UNIPHIER_PINCTRL_PIN(81, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE,
269 -1, UNIPHIER_PIN_DRV_FIXED_8, 267 -1, UNIPHIER_PIN_DRV_FIXED8,
270 81, UNIPHIER_PIN_PULL_DOWN), 268 81, UNIPHIER_PIN_PULL_DOWN),
271 UNIPHIER_PINCTRL_PIN(82, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE, 269 UNIPHIER_PINCTRL_PIN(82, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE,
272 -1, UNIPHIER_PIN_DRV_FIXED_8, 270 -1, UNIPHIER_PIN_DRV_FIXED8,
273 82, UNIPHIER_PIN_PULL_DOWN), 271 82, UNIPHIER_PIN_PULL_DOWN),
274 UNIPHIER_PINCTRL_PIN(83, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE, 272 UNIPHIER_PINCTRL_PIN(83, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE,
275 -1, UNIPHIER_PIN_DRV_FIXED_8, 273 -1, UNIPHIER_PIN_DRV_FIXED8,
276 83, UNIPHIER_PIN_PULL_DOWN), 274 83, UNIPHIER_PIN_PULL_DOWN),
277 UNIPHIER_PINCTRL_PIN(84, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE, 275 UNIPHIER_PINCTRL_PIN(84, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE,
278 -1, UNIPHIER_PIN_DRV_FIXED_8, 276 -1, UNIPHIER_PIN_DRV_FIXED8,
279 84, UNIPHIER_PIN_PULL_DOWN), 277 84, UNIPHIER_PIN_PULL_DOWN),
280 UNIPHIER_PINCTRL_PIN(85, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE, 278 UNIPHIER_PINCTRL_PIN(85, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE,
281 -1, UNIPHIER_PIN_DRV_FIXED_8, 279 -1, UNIPHIER_PIN_DRV_FIXED8,
282 85, UNIPHIER_PIN_PULL_DOWN), 280 85, UNIPHIER_PIN_PULL_DOWN),
283 UNIPHIER_PINCTRL_PIN(86, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE, 281 UNIPHIER_PINCTRL_PIN(86, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE,
284 -1, UNIPHIER_PIN_DRV_FIXED_8, 282 -1, UNIPHIER_PIN_DRV_FIXED8,
285 86, UNIPHIER_PIN_PULL_DOWN), 283 86, UNIPHIER_PIN_PULL_DOWN),
286 UNIPHIER_PINCTRL_PIN(87, "STS0CLKO", UNIPHIER_PIN_IECTRL_NONE, 284 UNIPHIER_PINCTRL_PIN(87, "STS0CLKO", UNIPHIER_PIN_IECTRL_NONE,
287 -1, UNIPHIER_PIN_DRV_FIXED_8, 285 -1, UNIPHIER_PIN_DRV_FIXED8,
288 87, UNIPHIER_PIN_PULL_DOWN), 286 87, UNIPHIER_PIN_PULL_DOWN),
289 UNIPHIER_PINCTRL_PIN(88, "STS0SYNCO", UNIPHIER_PIN_IECTRL_NONE, 287 UNIPHIER_PINCTRL_PIN(88, "STS0SYNCO", UNIPHIER_PIN_IECTRL_NONE,
290 -1, UNIPHIER_PIN_DRV_FIXED_8, 288 -1, UNIPHIER_PIN_DRV_FIXED8,
291 88, UNIPHIER_PIN_PULL_DOWN), 289 88, UNIPHIER_PIN_PULL_DOWN),
292 UNIPHIER_PINCTRL_PIN(89, "STS0VALO", UNIPHIER_PIN_IECTRL_NONE, 290 UNIPHIER_PINCTRL_PIN(89, "STS0VALO", UNIPHIER_PIN_IECTRL_NONE,
293 -1, UNIPHIER_PIN_DRV_FIXED_8, 291 -1, UNIPHIER_PIN_DRV_FIXED8,
294 89, UNIPHIER_PIN_PULL_DOWN), 292 89, UNIPHIER_PIN_PULL_DOWN),
295 UNIPHIER_PINCTRL_PIN(90, "STS0DATAO", UNIPHIER_PIN_IECTRL_NONE, 293 UNIPHIER_PINCTRL_PIN(90, "STS0DATAO", UNIPHIER_PIN_IECTRL_NONE,
296 -1, UNIPHIER_PIN_DRV_FIXED_8, 294 -1, UNIPHIER_PIN_DRV_FIXED8,
297 90, UNIPHIER_PIN_PULL_DOWN), 295 90, UNIPHIER_PIN_PULL_DOWN),
298 UNIPHIER_PINCTRL_PIN(91, "XIRQ17", UNIPHIER_PIN_IECTRL_NONE, 296 UNIPHIER_PINCTRL_PIN(91, "XIRQ17", UNIPHIER_PIN_IECTRL_NONE,
299 -1, UNIPHIER_PIN_DRV_FIXED_8, 297 -1, UNIPHIER_PIN_DRV_FIXED8,
300 91, UNIPHIER_PIN_PULL_DOWN), 298 91, UNIPHIER_PIN_PULL_DOWN),
301 UNIPHIER_PINCTRL_PIN(92, "PORT163", UNIPHIER_PIN_IECTRL_NONE, 299 UNIPHIER_PINCTRL_PIN(92, "PORT163", UNIPHIER_PIN_IECTRL_NONE,
302 -1, UNIPHIER_PIN_DRV_FIXED_8, 300 -1, UNIPHIER_PIN_DRV_FIXED8,
303 92, UNIPHIER_PIN_PULL_DOWN), 301 92, UNIPHIER_PIN_PULL_DOWN),
304 UNIPHIER_PINCTRL_PIN(93, "PORT165", UNIPHIER_PIN_IECTRL_NONE, 302 UNIPHIER_PINCTRL_PIN(93, "PORT165", UNIPHIER_PIN_IECTRL_NONE,
305 -1, UNIPHIER_PIN_DRV_FIXED_8, 303 -1, UNIPHIER_PIN_DRV_FIXED8,
306 93, UNIPHIER_PIN_PULL_DOWN), 304 93, UNIPHIER_PIN_PULL_DOWN),
307 UNIPHIER_PINCTRL_PIN(94, "PORT166", UNIPHIER_PIN_IECTRL_NONE, 305 UNIPHIER_PINCTRL_PIN(94, "PORT166", UNIPHIER_PIN_IECTRL_NONE,
308 -1, UNIPHIER_PIN_DRV_FIXED_8, 306 -1, UNIPHIER_PIN_DRV_FIXED8,
309 94, UNIPHIER_PIN_PULL_DOWN), 307 94, UNIPHIER_PIN_PULL_DOWN),
310 UNIPHIER_PINCTRL_PIN(95, "PORT132", UNIPHIER_PIN_IECTRL_NONE, 308 UNIPHIER_PINCTRL_PIN(95, "PORT132", UNIPHIER_PIN_IECTRL_NONE,
311 -1, UNIPHIER_PIN_DRV_FIXED_8, 309 -1, UNIPHIER_PIN_DRV_FIXED8,
312 95, UNIPHIER_PIN_PULL_DOWN), 310 95, UNIPHIER_PIN_PULL_DOWN),
313 UNIPHIER_PINCTRL_PIN(96, "PORT133", UNIPHIER_PIN_IECTRL_NONE, 311 UNIPHIER_PINCTRL_PIN(96, "PORT133", UNIPHIER_PIN_IECTRL_NONE,
314 -1, UNIPHIER_PIN_DRV_FIXED_8, 312 -1, UNIPHIER_PIN_DRV_FIXED8,
315 96, UNIPHIER_PIN_PULL_DOWN), 313 96, UNIPHIER_PIN_PULL_DOWN),
316 UNIPHIER_PINCTRL_PIN(97, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE, 314 UNIPHIER_PINCTRL_PIN(97, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE,
317 -1, UNIPHIER_PIN_DRV_FIXED_8, 315 -1, UNIPHIER_PIN_DRV_FIXED8,
318 97, UNIPHIER_PIN_PULL_DOWN), 316 97, UNIPHIER_PIN_PULL_DOWN),
319 UNIPHIER_PINCTRL_PIN(98, "AI2ADCCK", UNIPHIER_PIN_IECTRL_NONE, 317 UNIPHIER_PINCTRL_PIN(98, "AI2ADCCK", UNIPHIER_PIN_IECTRL_NONE,
320 -1, UNIPHIER_PIN_DRV_FIXED_8, 318 -1, UNIPHIER_PIN_DRV_FIXED8,
321 98, UNIPHIER_PIN_PULL_DOWN), 319 98, UNIPHIER_PIN_PULL_DOWN),
322 UNIPHIER_PINCTRL_PIN(99, "AI2BCK", UNIPHIER_PIN_IECTRL_NONE, 320 UNIPHIER_PINCTRL_PIN(99, "AI2BCK", UNIPHIER_PIN_IECTRL_NONE,
323 -1, UNIPHIER_PIN_DRV_FIXED_8, 321 -1, UNIPHIER_PIN_DRV_FIXED8,
324 99, UNIPHIER_PIN_PULL_DOWN), 322 99, UNIPHIER_PIN_PULL_DOWN),
325 UNIPHIER_PINCTRL_PIN(100, "AI2LRCK", UNIPHIER_PIN_IECTRL_NONE, 323 UNIPHIER_PINCTRL_PIN(100, "AI2LRCK", UNIPHIER_PIN_IECTRL_NONE,
326 -1, UNIPHIER_PIN_DRV_FIXED_8, 324 -1, UNIPHIER_PIN_DRV_FIXED8,
327 100, UNIPHIER_PIN_PULL_DOWN), 325 100, UNIPHIER_PIN_PULL_DOWN),
328 UNIPHIER_PINCTRL_PIN(101, "AI2D0", UNIPHIER_PIN_IECTRL_NONE, 326 UNIPHIER_PINCTRL_PIN(101, "AI2D0", UNIPHIER_PIN_IECTRL_NONE,
329 -1, UNIPHIER_PIN_DRV_FIXED_8, 327 -1, UNIPHIER_PIN_DRV_FIXED8,
330 101, UNIPHIER_PIN_PULL_DOWN), 328 101, UNIPHIER_PIN_PULL_DOWN),
331 UNIPHIER_PINCTRL_PIN(102, "AI2D1", UNIPHIER_PIN_IECTRL_NONE, 329 UNIPHIER_PINCTRL_PIN(102, "AI2D1", UNIPHIER_PIN_IECTRL_NONE,
332 -1, UNIPHIER_PIN_DRV_FIXED_8, 330 -1, UNIPHIER_PIN_DRV_FIXED8,
333 102, UNIPHIER_PIN_PULL_DOWN), 331 102, UNIPHIER_PIN_PULL_DOWN),
334 UNIPHIER_PINCTRL_PIN(103, "AI2D2", UNIPHIER_PIN_IECTRL_NONE, 332 UNIPHIER_PINCTRL_PIN(103, "AI2D2", UNIPHIER_PIN_IECTRL_NONE,
335 -1, UNIPHIER_PIN_DRV_FIXED_8, 333 -1, UNIPHIER_PIN_DRV_FIXED8,
336 103, UNIPHIER_PIN_PULL_DOWN), 334 103, UNIPHIER_PIN_PULL_DOWN),
337 UNIPHIER_PINCTRL_PIN(104, "AI2D3", UNIPHIER_PIN_IECTRL_NONE, 335 UNIPHIER_PINCTRL_PIN(104, "AI2D3", UNIPHIER_PIN_IECTRL_NONE,
338 -1, UNIPHIER_PIN_DRV_FIXED_8, 336 -1, UNIPHIER_PIN_DRV_FIXED8,
339 104, UNIPHIER_PIN_PULL_DOWN), 337 104, UNIPHIER_PIN_PULL_DOWN),
340 UNIPHIER_PINCTRL_PIN(105, "AO3DACCK", UNIPHIER_PIN_IECTRL_NONE, 338 UNIPHIER_PINCTRL_PIN(105, "AO3DACCK", UNIPHIER_PIN_IECTRL_NONE,
341 -1, UNIPHIER_PIN_DRV_FIXED_8, 339 -1, UNIPHIER_PIN_DRV_FIXED8,
342 105, UNIPHIER_PIN_PULL_DOWN), 340 105, UNIPHIER_PIN_PULL_DOWN),
343 UNIPHIER_PINCTRL_PIN(106, "AO3BCK", UNIPHIER_PIN_IECTRL_NONE, 341 UNIPHIER_PINCTRL_PIN(106, "AO3BCK", UNIPHIER_PIN_IECTRL_NONE,
344 -1, UNIPHIER_PIN_DRV_FIXED_8, 342 -1, UNIPHIER_PIN_DRV_FIXED8,
345 106, UNIPHIER_PIN_PULL_DOWN), 343 106, UNIPHIER_PIN_PULL_DOWN),
346 UNIPHIER_PINCTRL_PIN(107, "AO3LRCK", UNIPHIER_PIN_IECTRL_NONE, 344 UNIPHIER_PINCTRL_PIN(107, "AO3LRCK", UNIPHIER_PIN_IECTRL_NONE,
347 -1, UNIPHIER_PIN_DRV_FIXED_8, 345 -1, UNIPHIER_PIN_DRV_FIXED8,
348 107, UNIPHIER_PIN_PULL_DOWN), 346 107, UNIPHIER_PIN_PULL_DOWN),
349 UNIPHIER_PINCTRL_PIN(108, "AO3DMIX", UNIPHIER_PIN_IECTRL_NONE, 347 UNIPHIER_PINCTRL_PIN(108, "AO3DMIX", UNIPHIER_PIN_IECTRL_NONE,
350 -1, UNIPHIER_PIN_DRV_FIXED_8, 348 -1, UNIPHIER_PIN_DRV_FIXED8,
351 108, UNIPHIER_PIN_PULL_DOWN), 349 108, UNIPHIER_PIN_PULL_DOWN),
352 UNIPHIER_PINCTRL_PIN(109, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 350 UNIPHIER_PINCTRL_PIN(109, "SDA0", UNIPHIER_PIN_IECTRL_NONE,
353 -1, UNIPHIER_PIN_DRV_FIXED_8, 351 -1, UNIPHIER_PIN_DRV_FIXED8,
354 109, UNIPHIER_PIN_PULL_DOWN), 352 109, UNIPHIER_PIN_PULL_DOWN),
355 UNIPHIER_PINCTRL_PIN(110, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 353 UNIPHIER_PINCTRL_PIN(110, "SCL0", UNIPHIER_PIN_IECTRL_NONE,
356 -1, UNIPHIER_PIN_DRV_FIXED_8, 354 -1, UNIPHIER_PIN_DRV_FIXED8,
357 110, UNIPHIER_PIN_PULL_DOWN), 355 110, UNIPHIER_PIN_PULL_DOWN),
358 UNIPHIER_PINCTRL_PIN(111, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 356 UNIPHIER_PINCTRL_PIN(111, "SDA1", UNIPHIER_PIN_IECTRL_NONE,
359 -1, UNIPHIER_PIN_DRV_FIXED_8, 357 -1, UNIPHIER_PIN_DRV_FIXED8,
360 111, UNIPHIER_PIN_PULL_DOWN), 358 111, UNIPHIER_PIN_PULL_DOWN),
361 UNIPHIER_PINCTRL_PIN(112, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 359 UNIPHIER_PINCTRL_PIN(112, "SCL1", UNIPHIER_PIN_IECTRL_NONE,
362 -1, UNIPHIER_PIN_DRV_FIXED_8, 360 -1, UNIPHIER_PIN_DRV_FIXED8,
363 112, UNIPHIER_PIN_PULL_DOWN), 361 112, UNIPHIER_PIN_PULL_DOWN),
364 UNIPHIER_PINCTRL_PIN(113, "TXD2", 0, 362 UNIPHIER_PINCTRL_PIN(113, "TXD2", 0,
365 113, UNIPHIER_PIN_DRV_4_8, 363 113, UNIPHIER_PIN_DRV_1BIT,
366 113, UNIPHIER_PIN_PULL_UP), 364 113, UNIPHIER_PIN_PULL_UP),
367 UNIPHIER_PINCTRL_PIN(114, "RXD2", 0, 365 UNIPHIER_PINCTRL_PIN(114, "RXD2", 0,
368 114, UNIPHIER_PIN_DRV_4_8, 366 114, UNIPHIER_PIN_DRV_1BIT,
369 114, UNIPHIER_PIN_PULL_UP), 367 114, UNIPHIER_PIN_PULL_UP),
370 UNIPHIER_PINCTRL_PIN(115, "TXD1", 0, 368 UNIPHIER_PINCTRL_PIN(115, "TXD1", 0,
371 115, UNIPHIER_PIN_DRV_4_8, 369 115, UNIPHIER_PIN_DRV_1BIT,
372 115, UNIPHIER_PIN_PULL_UP), 370 115, UNIPHIER_PIN_PULL_UP),
373 UNIPHIER_PINCTRL_PIN(116, "RXD1", 0, 371 UNIPHIER_PINCTRL_PIN(116, "RXD1", 0,
374 116, UNIPHIER_PIN_DRV_4_8, 372 116, UNIPHIER_PIN_DRV_1BIT,
375 116, UNIPHIER_PIN_PULL_UP), 373 116, UNIPHIER_PIN_PULL_UP),
376 UNIPHIER_PINCTRL_PIN(117, "PORT190", UNIPHIER_PIN_IECTRL_NONE, 374 UNIPHIER_PINCTRL_PIN(117, "PORT190", UNIPHIER_PIN_IECTRL_NONE,
377 -1, UNIPHIER_PIN_DRV_FIXED_8, 375 -1, UNIPHIER_PIN_DRV_FIXED8,
378 117, UNIPHIER_PIN_PULL_DOWN), 376 117, UNIPHIER_PIN_PULL_DOWN),
379 UNIPHIER_PINCTRL_PIN(118, "VI1HSYNC", UNIPHIER_PIN_IECTRL_NONE, 377 UNIPHIER_PINCTRL_PIN(118, "VI1HSYNC", UNIPHIER_PIN_IECTRL_NONE,
380 -1, UNIPHIER_PIN_DRV_FIXED_8, 378 -1, UNIPHIER_PIN_DRV_FIXED8,
381 118, UNIPHIER_PIN_PULL_DOWN), 379 118, UNIPHIER_PIN_PULL_DOWN),
382 UNIPHIER_PINCTRL_PIN(119, "VI1VSYNC", UNIPHIER_PIN_IECTRL_NONE, 380 UNIPHIER_PINCTRL_PIN(119, "VI1VSYNC", UNIPHIER_PIN_IECTRL_NONE,
383 -1, UNIPHIER_PIN_DRV_FIXED_8, 381 -1, UNIPHIER_PIN_DRV_FIXED8,
384 119, UNIPHIER_PIN_PULL_DOWN), 382 119, UNIPHIER_PIN_PULL_DOWN),
385 UNIPHIER_PINCTRL_PIN(120, "VI1DE", UNIPHIER_PIN_IECTRL_NONE, 383 UNIPHIER_PINCTRL_PIN(120, "VI1DE", UNIPHIER_PIN_IECTRL_NONE,
386 -1, UNIPHIER_PIN_DRV_FIXED_8, 384 -1, UNIPHIER_PIN_DRV_FIXED8,
387 120, UNIPHIER_PIN_PULL_DOWN), 385 120, UNIPHIER_PIN_PULL_DOWN),
388 UNIPHIER_PINCTRL_PIN(121, "XIRQ3", UNIPHIER_PIN_IECTRL_NONE, 386 UNIPHIER_PINCTRL_PIN(121, "XIRQ3", UNIPHIER_PIN_IECTRL_NONE,
389 -1, UNIPHIER_PIN_DRV_FIXED_8, 387 -1, UNIPHIER_PIN_DRV_FIXED8,
390 121, UNIPHIER_PIN_PULL_DOWN), 388 121, UNIPHIER_PIN_PULL_DOWN),
391 UNIPHIER_PINCTRL_PIN(122, "XIRQ4", UNIPHIER_PIN_IECTRL_NONE, 389 UNIPHIER_PINCTRL_PIN(122, "XIRQ4", UNIPHIER_PIN_IECTRL_NONE,
392 -1, UNIPHIER_PIN_DRV_FIXED_8, 390 -1, UNIPHIER_PIN_DRV_FIXED8,
393 122, UNIPHIER_PIN_PULL_DOWN), 391 122, UNIPHIER_PIN_PULL_DOWN),
394 UNIPHIER_PINCTRL_PIN(123, "VI1G2", UNIPHIER_PIN_IECTRL_NONE, 392 UNIPHIER_PINCTRL_PIN(123, "VI1G2", UNIPHIER_PIN_IECTRL_NONE,
395 -1, UNIPHIER_PIN_DRV_FIXED_8, 393 -1, UNIPHIER_PIN_DRV_FIXED8,
396 123, UNIPHIER_PIN_PULL_DOWN), 394 123, UNIPHIER_PIN_PULL_DOWN),
397 UNIPHIER_PINCTRL_PIN(124, "VI1G3", UNIPHIER_PIN_IECTRL_NONE, 395 UNIPHIER_PINCTRL_PIN(124, "VI1G3", UNIPHIER_PIN_IECTRL_NONE,
398 -1, UNIPHIER_PIN_DRV_FIXED_8, 396 -1, UNIPHIER_PIN_DRV_FIXED8,
399 124, UNIPHIER_PIN_PULL_DOWN), 397 124, UNIPHIER_PIN_PULL_DOWN),
400 UNIPHIER_PINCTRL_PIN(125, "VI1G4", UNIPHIER_PIN_IECTRL_NONE, 398 UNIPHIER_PINCTRL_PIN(125, "VI1G4", UNIPHIER_PIN_IECTRL_NONE,
401 -1, UNIPHIER_PIN_DRV_FIXED_8, 399 -1, UNIPHIER_PIN_DRV_FIXED8,
402 125, UNIPHIER_PIN_PULL_DOWN), 400 125, UNIPHIER_PIN_PULL_DOWN),
403 UNIPHIER_PINCTRL_PIN(126, "VI1G5", UNIPHIER_PIN_IECTRL_NONE, 401 UNIPHIER_PINCTRL_PIN(126, "VI1G5", UNIPHIER_PIN_IECTRL_NONE,
404 -1, UNIPHIER_PIN_DRV_FIXED_8, 402 -1, UNIPHIER_PIN_DRV_FIXED8,
405 126, UNIPHIER_PIN_PULL_DOWN), 403 126, UNIPHIER_PIN_PULL_DOWN),
406 UNIPHIER_PINCTRL_PIN(127, "VI1G6", UNIPHIER_PIN_IECTRL_NONE, 404 UNIPHIER_PINCTRL_PIN(127, "VI1G6", UNIPHIER_PIN_IECTRL_NONE,
407 -1, UNIPHIER_PIN_DRV_FIXED_8, 405 -1, UNIPHIER_PIN_DRV_FIXED8,
408 127, UNIPHIER_PIN_PULL_DOWN), 406 127, UNIPHIER_PIN_PULL_DOWN),
409 UNIPHIER_PINCTRL_PIN(128, "VI1G7", UNIPHIER_PIN_IECTRL_NONE, 407 UNIPHIER_PINCTRL_PIN(128, "VI1G7", UNIPHIER_PIN_IECTRL_NONE,
410 -1, UNIPHIER_PIN_DRV_FIXED_8, 408 -1, UNIPHIER_PIN_DRV_FIXED8,
411 128, UNIPHIER_PIN_PULL_DOWN), 409 128, UNIPHIER_PIN_PULL_DOWN),
412 UNIPHIER_PINCTRL_PIN(129, "VI1G8", UNIPHIER_PIN_IECTRL_NONE, 410 UNIPHIER_PINCTRL_PIN(129, "VI1G8", UNIPHIER_PIN_IECTRL_NONE,
413 -1, UNIPHIER_PIN_DRV_FIXED_8, 411 -1, UNIPHIER_PIN_DRV_FIXED8,
414 129, UNIPHIER_PIN_PULL_DOWN), 412 129, UNIPHIER_PIN_PULL_DOWN),
415 UNIPHIER_PINCTRL_PIN(130, "VI1G9", UNIPHIER_PIN_IECTRL_NONE, 413 UNIPHIER_PINCTRL_PIN(130, "VI1G9", UNIPHIER_PIN_IECTRL_NONE,
416 -1, UNIPHIER_PIN_DRV_FIXED_8, 414 -1, UNIPHIER_PIN_DRV_FIXED8,
417 130, UNIPHIER_PIN_PULL_DOWN), 415 130, UNIPHIER_PIN_PULL_DOWN),
418 UNIPHIER_PINCTRL_PIN(131, "VI1CLK", UNIPHIER_PIN_IECTRL_NONE, 416 UNIPHIER_PINCTRL_PIN(131, "VI1CLK", UNIPHIER_PIN_IECTRL_NONE,
419 -1, UNIPHIER_PIN_DRV_FIXED_8, 417 -1, UNIPHIER_PIN_DRV_FIXED8,
420 131, UNIPHIER_PIN_PULL_DOWN), 418 131, UNIPHIER_PIN_PULL_DOWN),
421 UNIPHIER_PINCTRL_PIN(132, "PORT05", UNIPHIER_PIN_IECTRL_NONE, 419 UNIPHIER_PINCTRL_PIN(132, "PORT05", UNIPHIER_PIN_IECTRL_NONE,
422 -1, UNIPHIER_PIN_DRV_FIXED_8, 420 -1, UNIPHIER_PIN_DRV_FIXED8,
423 132, UNIPHIER_PIN_PULL_DOWN), 421 132, UNIPHIER_PIN_PULL_DOWN),
424 UNIPHIER_PINCTRL_PIN(133, "PORT06", UNIPHIER_PIN_IECTRL_NONE, 422 UNIPHIER_PINCTRL_PIN(133, "PORT06", UNIPHIER_PIN_IECTRL_NONE,
425 -1, UNIPHIER_PIN_DRV_FIXED_8, 423 -1, UNIPHIER_PIN_DRV_FIXED8,
426 133, UNIPHIER_PIN_PULL_DOWN), 424 133, UNIPHIER_PIN_PULL_DOWN),
427 UNIPHIER_PINCTRL_PIN(134, "VI1R2", UNIPHIER_PIN_IECTRL_NONE, 425 UNIPHIER_PINCTRL_PIN(134, "VI1R2", UNIPHIER_PIN_IECTRL_NONE,
428 -1, UNIPHIER_PIN_DRV_FIXED_8, 426 -1, UNIPHIER_PIN_DRV_FIXED8,
429 134, UNIPHIER_PIN_PULL_DOWN), 427 134, UNIPHIER_PIN_PULL_DOWN),
430 UNIPHIER_PINCTRL_PIN(135, "VI1R3", UNIPHIER_PIN_IECTRL_NONE, 428 UNIPHIER_PINCTRL_PIN(135, "VI1R3", UNIPHIER_PIN_IECTRL_NONE,
431 -1, UNIPHIER_PIN_DRV_FIXED_8, 429 -1, UNIPHIER_PIN_DRV_FIXED8,
432 135, UNIPHIER_PIN_PULL_DOWN), 430 135, UNIPHIER_PIN_PULL_DOWN),
433 UNIPHIER_PINCTRL_PIN(136, "VI1R4", UNIPHIER_PIN_IECTRL_NONE, 431 UNIPHIER_PINCTRL_PIN(136, "VI1R4", UNIPHIER_PIN_IECTRL_NONE,
434 -1, UNIPHIER_PIN_DRV_FIXED_8, 432 -1, UNIPHIER_PIN_DRV_FIXED8,
435 136, UNIPHIER_PIN_PULL_DOWN), 433 136, UNIPHIER_PIN_PULL_DOWN),
436 UNIPHIER_PINCTRL_PIN(137, "VI1R5", UNIPHIER_PIN_IECTRL_NONE, 434 UNIPHIER_PINCTRL_PIN(137, "VI1R5", UNIPHIER_PIN_IECTRL_NONE,
437 -1, UNIPHIER_PIN_DRV_FIXED_8, 435 -1, UNIPHIER_PIN_DRV_FIXED8,
438 137, UNIPHIER_PIN_PULL_DOWN), 436 137, UNIPHIER_PIN_PULL_DOWN),
439 UNIPHIER_PINCTRL_PIN(138, "VI1R6", UNIPHIER_PIN_IECTRL_NONE, 437 UNIPHIER_PINCTRL_PIN(138, "VI1R6", UNIPHIER_PIN_IECTRL_NONE,
440 -1, UNIPHIER_PIN_DRV_FIXED_8, 438 -1, UNIPHIER_PIN_DRV_FIXED8,
441 138, UNIPHIER_PIN_PULL_DOWN), 439 138, UNIPHIER_PIN_PULL_DOWN),
442 UNIPHIER_PINCTRL_PIN(139, "VI1R7", UNIPHIER_PIN_IECTRL_NONE, 440 UNIPHIER_PINCTRL_PIN(139, "VI1R7", UNIPHIER_PIN_IECTRL_NONE,
443 -1, UNIPHIER_PIN_DRV_FIXED_8, 441 -1, UNIPHIER_PIN_DRV_FIXED8,
444 139, UNIPHIER_PIN_PULL_DOWN), 442 139, UNIPHIER_PIN_PULL_DOWN),
445 UNIPHIER_PINCTRL_PIN(140, "VI1R8", UNIPHIER_PIN_IECTRL_NONE, 443 UNIPHIER_PINCTRL_PIN(140, "VI1R8", UNIPHIER_PIN_IECTRL_NONE,
446 -1, UNIPHIER_PIN_DRV_FIXED_8, 444 -1, UNIPHIER_PIN_DRV_FIXED8,
447 140, UNIPHIER_PIN_PULL_DOWN), 445 140, UNIPHIER_PIN_PULL_DOWN),
448 UNIPHIER_PINCTRL_PIN(141, "VI1R9", UNIPHIER_PIN_IECTRL_NONE, 446 UNIPHIER_PINCTRL_PIN(141, "VI1R9", UNIPHIER_PIN_IECTRL_NONE,
449 -1, UNIPHIER_PIN_DRV_FIXED_8, 447 -1, UNIPHIER_PIN_DRV_FIXED8,
450 141, UNIPHIER_PIN_PULL_DOWN), 448 141, UNIPHIER_PIN_PULL_DOWN),
451 UNIPHIER_PINCTRL_PIN(142, "LPST", UNIPHIER_PIN_IECTRL_NONE, 449 UNIPHIER_PINCTRL_PIN(142, "LPST", UNIPHIER_PIN_IECTRL_NONE,
452 142, UNIPHIER_PIN_DRV_4_8, 450 142, UNIPHIER_PIN_DRV_1BIT,
453 142, UNIPHIER_PIN_PULL_DOWN), 451 142, UNIPHIER_PIN_PULL_DOWN),
454 UNIPHIER_PINCTRL_PIN(143, "MDC", 0, 452 UNIPHIER_PINCTRL_PIN(143, "MDC", 0,
455 143, UNIPHIER_PIN_DRV_4_8, 453 143, UNIPHIER_PIN_DRV_1BIT,
456 143, UNIPHIER_PIN_PULL_DOWN), 454 143, UNIPHIER_PIN_PULL_DOWN),
457 UNIPHIER_PINCTRL_PIN(144, "MDIO", 0, 455 UNIPHIER_PINCTRL_PIN(144, "MDIO", 0,
458 144, UNIPHIER_PIN_DRV_4_8, 456 144, UNIPHIER_PIN_DRV_1BIT,
459 144, UNIPHIER_PIN_PULL_DOWN), 457 144, UNIPHIER_PIN_PULL_DOWN),
460 UNIPHIER_PINCTRL_PIN(145, "MDIO_INTL", 0, 458 UNIPHIER_PINCTRL_PIN(145, "MDIO_INTL", 0,
461 145, UNIPHIER_PIN_DRV_4_8, 459 145, UNIPHIER_PIN_DRV_1BIT,
462 145, UNIPHIER_PIN_PULL_DOWN), 460 145, UNIPHIER_PIN_PULL_DOWN),
463 UNIPHIER_PINCTRL_PIN(146, "PHYRSTL", 0, 461 UNIPHIER_PINCTRL_PIN(146, "PHYRSTL", 0,
464 146, UNIPHIER_PIN_DRV_4_8, 462 146, UNIPHIER_PIN_DRV_1BIT,
465 146, UNIPHIER_PIN_PULL_DOWN), 463 146, UNIPHIER_PIN_PULL_DOWN),
466 UNIPHIER_PINCTRL_PIN(147, "RGMII_RXCLK", 0, 464 UNIPHIER_PINCTRL_PIN(147, "RGMII_RXCLK", 0,
467 147, UNIPHIER_PIN_DRV_4_8, 465 147, UNIPHIER_PIN_DRV_1BIT,
468 147, UNIPHIER_PIN_PULL_DOWN), 466 147, UNIPHIER_PIN_PULL_DOWN),
469 UNIPHIER_PINCTRL_PIN(148, "RGMII_RXD0", 0, 467 UNIPHIER_PINCTRL_PIN(148, "RGMII_RXD0", 0,
470 148, UNIPHIER_PIN_DRV_4_8, 468 148, UNIPHIER_PIN_DRV_1BIT,
471 148, UNIPHIER_PIN_PULL_DOWN), 469 148, UNIPHIER_PIN_PULL_DOWN),
472 UNIPHIER_PINCTRL_PIN(149, "RGMII_RXD1", 0, 470 UNIPHIER_PINCTRL_PIN(149, "RGMII_RXD1", 0,
473 149, UNIPHIER_PIN_DRV_4_8, 471 149, UNIPHIER_PIN_DRV_1BIT,
474 149, UNIPHIER_PIN_PULL_DOWN), 472 149, UNIPHIER_PIN_PULL_DOWN),
475 UNIPHIER_PINCTRL_PIN(150, "RGMII_RXD2", 0, 473 UNIPHIER_PINCTRL_PIN(150, "RGMII_RXD2", 0,
476 150, UNIPHIER_PIN_DRV_4_8, 474 150, UNIPHIER_PIN_DRV_1BIT,
477 150, UNIPHIER_PIN_PULL_DOWN), 475 150, UNIPHIER_PIN_PULL_DOWN),
478 UNIPHIER_PINCTRL_PIN(151, "RGMII_RXD3", 0, 476 UNIPHIER_PINCTRL_PIN(151, "RGMII_RXD3", 0,
479 151, UNIPHIER_PIN_DRV_4_8, 477 151, UNIPHIER_PIN_DRV_1BIT,
480 151, UNIPHIER_PIN_PULL_DOWN), 478 151, UNIPHIER_PIN_PULL_DOWN),
481 UNIPHIER_PINCTRL_PIN(152, "RGMII_RXCTL", 0, 479 UNIPHIER_PINCTRL_PIN(152, "RGMII_RXCTL", 0,
482 152, UNIPHIER_PIN_DRV_4_8, 480 152, UNIPHIER_PIN_DRV_1BIT,
483 152, UNIPHIER_PIN_PULL_DOWN), 481 152, UNIPHIER_PIN_PULL_DOWN),
484 UNIPHIER_PINCTRL_PIN(153, "RGMII_TXCLK", 0, 482 UNIPHIER_PINCTRL_PIN(153, "RGMII_TXCLK", 0,
485 153, UNIPHIER_PIN_DRV_4_8, 483 153, UNIPHIER_PIN_DRV_1BIT,
486 153, UNIPHIER_PIN_PULL_DOWN), 484 153, UNIPHIER_PIN_PULL_DOWN),
487 UNIPHIER_PINCTRL_PIN(154, "RGMII_TXD0", 0, 485 UNIPHIER_PINCTRL_PIN(154, "RGMII_TXD0", 0,
488 154, UNIPHIER_PIN_DRV_4_8, 486 154, UNIPHIER_PIN_DRV_1BIT,
489 154, UNIPHIER_PIN_PULL_DOWN), 487 154, UNIPHIER_PIN_PULL_DOWN),
490 UNIPHIER_PINCTRL_PIN(155, "RGMII_TXD1", 0, 488 UNIPHIER_PINCTRL_PIN(155, "RGMII_TXD1", 0,
491 155, UNIPHIER_PIN_DRV_4_8, 489 155, UNIPHIER_PIN_DRV_1BIT,
492 155, UNIPHIER_PIN_PULL_DOWN), 490 155, UNIPHIER_PIN_PULL_DOWN),
493 UNIPHIER_PINCTRL_PIN(156, "RGMII_TXD2", 0, 491 UNIPHIER_PINCTRL_PIN(156, "RGMII_TXD2", 0,
494 156, UNIPHIER_PIN_DRV_4_8, 492 156, UNIPHIER_PIN_DRV_1BIT,
495 156, UNIPHIER_PIN_PULL_DOWN), 493 156, UNIPHIER_PIN_PULL_DOWN),
496 UNIPHIER_PINCTRL_PIN(157, "RGMII_TXD3", 0, 494 UNIPHIER_PINCTRL_PIN(157, "RGMII_TXD3", 0,
497 157, UNIPHIER_PIN_DRV_4_8, 495 157, UNIPHIER_PIN_DRV_1BIT,
498 157, UNIPHIER_PIN_PULL_DOWN), 496 157, UNIPHIER_PIN_PULL_DOWN),
499 UNIPHIER_PINCTRL_PIN(158, "RGMII_TXCTL", 0, 497 UNIPHIER_PINCTRL_PIN(158, "RGMII_TXCTL", 0,
500 158, UNIPHIER_PIN_DRV_4_8, 498 158, UNIPHIER_PIN_DRV_1BIT,
501 158, UNIPHIER_PIN_PULL_DOWN), 499 158, UNIPHIER_PIN_PULL_DOWN),
502 UNIPHIER_PINCTRL_PIN(159, "SDA3", UNIPHIER_PIN_IECTRL_NONE, 500 UNIPHIER_PINCTRL_PIN(159, "SDA3", UNIPHIER_PIN_IECTRL_NONE,
503 -1, UNIPHIER_PIN_DRV_FIXED_8, 501 -1, UNIPHIER_PIN_DRV_FIXED8,
504 159, UNIPHIER_PIN_PULL_DOWN), 502 159, UNIPHIER_PIN_PULL_DOWN),
505 UNIPHIER_PINCTRL_PIN(160, "SCL3", UNIPHIER_PIN_IECTRL_NONE, 503 UNIPHIER_PINCTRL_PIN(160, "SCL3", UNIPHIER_PIN_IECTRL_NONE,
506 -1, UNIPHIER_PIN_DRV_FIXED_8, 504 -1, UNIPHIER_PIN_DRV_FIXED8,
507 160, UNIPHIER_PIN_PULL_DOWN), 505 160, UNIPHIER_PIN_PULL_DOWN),
508 UNIPHIER_PINCTRL_PIN(161, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE, 506 UNIPHIER_PINCTRL_PIN(161, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE,
509 -1, UNIPHIER_PIN_DRV_FIXED_8, 507 -1, UNIPHIER_PIN_DRV_FIXED8,
510 161, UNIPHIER_PIN_PULL_DOWN), 508 161, UNIPHIER_PIN_PULL_DOWN),
511 UNIPHIER_PINCTRL_PIN(162, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE, 509 UNIPHIER_PINCTRL_PIN(162, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE,
512 -1, UNIPHIER_PIN_DRV_FIXED_8, 510 -1, UNIPHIER_PIN_DRV_FIXED8,
513 162, UNIPHIER_PIN_PULL_DOWN), 511 162, UNIPHIER_PIN_PULL_DOWN),
514 UNIPHIER_PINCTRL_PIN(163, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE, 512 UNIPHIER_PINCTRL_PIN(163, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE,
515 -1, UNIPHIER_PIN_DRV_FIXED_8, 513 -1, UNIPHIER_PIN_DRV_FIXED8,
516 163, UNIPHIER_PIN_PULL_DOWN), 514 163, UNIPHIER_PIN_PULL_DOWN),
517 UNIPHIER_PINCTRL_PIN(164, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE, 515 UNIPHIER_PINCTRL_PIN(164, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE,
518 -1, UNIPHIER_PIN_DRV_FIXED_8, 516 -1, UNIPHIER_PIN_DRV_FIXED8,
519 164, UNIPHIER_PIN_PULL_DOWN), 517 164, UNIPHIER_PIN_PULL_DOWN),
520 UNIPHIER_PINCTRL_PIN(165, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE, 518 UNIPHIER_PINCTRL_PIN(165, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE,
521 -1, UNIPHIER_PIN_DRV_FIXED_8, 519 -1, UNIPHIER_PIN_DRV_FIXED8,
522 165, UNIPHIER_PIN_PULL_DOWN), 520 165, UNIPHIER_PIN_PULL_DOWN),
523 UNIPHIER_PINCTRL_PIN(166, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE, 521 UNIPHIER_PINCTRL_PIN(166, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE,
524 -1, UNIPHIER_PIN_DRV_FIXED_8, 522 -1, UNIPHIER_PIN_DRV_FIXED8,
525 166, UNIPHIER_PIN_PULL_DOWN), 523 166, UNIPHIER_PIN_PULL_DOWN),
526 UNIPHIER_PINCTRL_PIN(167, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE, 524 UNIPHIER_PINCTRL_PIN(167, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE,
527 -1, UNIPHIER_PIN_DRV_FIXED_8, 525 -1, UNIPHIER_PIN_DRV_FIXED8,
528 167, UNIPHIER_PIN_PULL_DOWN), 526 167, UNIPHIER_PIN_PULL_DOWN),
529 UNIPHIER_PINCTRL_PIN(168, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE, 527 UNIPHIER_PINCTRL_PIN(168, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE,
530 -1, UNIPHIER_PIN_DRV_FIXED_8, 528 -1, UNIPHIER_PIN_DRV_FIXED8,
531 168, UNIPHIER_PIN_PULL_DOWN), 529 168, UNIPHIER_PIN_PULL_DOWN),
532 UNIPHIER_PINCTRL_PIN(169, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE, 530 UNIPHIER_PINCTRL_PIN(169, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE,
533 -1, UNIPHIER_PIN_DRV_FIXED_8, 531 -1, UNIPHIER_PIN_DRV_FIXED8,
534 169, UNIPHIER_PIN_PULL_DOWN), 532 169, UNIPHIER_PIN_PULL_DOWN),
535 UNIPHIER_PINCTRL_PIN(170, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE, 533 UNIPHIER_PINCTRL_PIN(170, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE,
536 -1, UNIPHIER_PIN_DRV_FIXED_8, 534 -1, UNIPHIER_PIN_DRV_FIXED8,
537 170, UNIPHIER_PIN_PULL_DOWN), 535 170, UNIPHIER_PIN_PULL_DOWN),
538 UNIPHIER_PINCTRL_PIN(171, "SDA2", UNIPHIER_PIN_IECTRL_NONE, 536 UNIPHIER_PINCTRL_PIN(171, "SDA2", UNIPHIER_PIN_IECTRL_NONE,
539 -1, UNIPHIER_PIN_DRV_FIXED_8, 537 -1, UNIPHIER_PIN_DRV_FIXED8,
540 171, UNIPHIER_PIN_PULL_DOWN), 538 171, UNIPHIER_PIN_PULL_DOWN),
541 UNIPHIER_PINCTRL_PIN(172, "SCL2", UNIPHIER_PIN_IECTRL_NONE, 539 UNIPHIER_PINCTRL_PIN(172, "SCL2", UNIPHIER_PIN_IECTRL_NONE,
542 -1, UNIPHIER_PIN_DRV_FIXED_8, 540 -1, UNIPHIER_PIN_DRV_FIXED8,
543 172, UNIPHIER_PIN_PULL_DOWN), 541 172, UNIPHIER_PIN_PULL_DOWN),
544 UNIPHIER_PINCTRL_PIN(173, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE, 542 UNIPHIER_PINCTRL_PIN(173, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE,
545 -1, UNIPHIER_PIN_DRV_FIXED_8, 543 -1, UNIPHIER_PIN_DRV_FIXED8,
546 173, UNIPHIER_PIN_PULL_DOWN), 544 173, UNIPHIER_PIN_PULL_DOWN),
547 UNIPHIER_PINCTRL_PIN(174, "AI1D0", UNIPHIER_PIN_IECTRL_NONE, 545 UNIPHIER_PINCTRL_PIN(174, "AI1D0", UNIPHIER_PIN_IECTRL_NONE,
548 -1, UNIPHIER_PIN_DRV_FIXED_8, 546 -1, UNIPHIER_PIN_DRV_FIXED8,
549 174, UNIPHIER_PIN_PULL_DOWN), 547 174, UNIPHIER_PIN_PULL_DOWN),
550 UNIPHIER_PINCTRL_PIN(175, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 548 UNIPHIER_PINCTRL_PIN(175, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE,
551 -1, UNIPHIER_PIN_DRV_FIXED_8, 549 -1, UNIPHIER_PIN_DRV_FIXED8,
552 175, UNIPHIER_PIN_PULL_DOWN), 550 175, UNIPHIER_PIN_PULL_DOWN),
553 UNIPHIER_PINCTRL_PIN(176, "AO2D0", UNIPHIER_PIN_IECTRL_NONE, 551 UNIPHIER_PINCTRL_PIN(176, "AO2D0", UNIPHIER_PIN_IECTRL_NONE,
554 -1, UNIPHIER_PIN_DRV_FIXED_8, 552 -1, UNIPHIER_PIN_DRV_FIXED8,
555 176, UNIPHIER_PIN_PULL_DOWN), 553 176, UNIPHIER_PIN_PULL_DOWN),
556 UNIPHIER_PINCTRL_PIN(177, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 554 UNIPHIER_PINCTRL_PIN(177, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE,
557 -1, UNIPHIER_PIN_DRV_FIXED_8, 555 -1, UNIPHIER_PIN_DRV_FIXED8,
558 177, UNIPHIER_PIN_PULL_DOWN), 556 177, UNIPHIER_PIN_PULL_DOWN),
559 UNIPHIER_PINCTRL_PIN(178, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 557 UNIPHIER_PINCTRL_PIN(178, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE,
560 -1, UNIPHIER_PIN_DRV_FIXED_8, 558 -1, UNIPHIER_PIN_DRV_FIXED8,
561 178, UNIPHIER_PIN_PULL_DOWN), 559 178, UNIPHIER_PIN_PULL_DOWN),
562 UNIPHIER_PINCTRL_PIN(179, "PORT222", UNIPHIER_PIN_IECTRL_NONE, 560 UNIPHIER_PINCTRL_PIN(179, "PORT222", UNIPHIER_PIN_IECTRL_NONE,
563 -1, UNIPHIER_PIN_DRV_FIXED_8, 561 -1, UNIPHIER_PIN_DRV_FIXED8,
564 179, UNIPHIER_PIN_PULL_DOWN), 562 179, UNIPHIER_PIN_PULL_DOWN),
565 UNIPHIER_PINCTRL_PIN(180, "PORT223", UNIPHIER_PIN_IECTRL_NONE, 563 UNIPHIER_PINCTRL_PIN(180, "PORT223", UNIPHIER_PIN_IECTRL_NONE,
566 -1, UNIPHIER_PIN_DRV_FIXED_8, 564 -1, UNIPHIER_PIN_DRV_FIXED8,
567 180, UNIPHIER_PIN_PULL_DOWN), 565 180, UNIPHIER_PIN_PULL_DOWN),
568 UNIPHIER_PINCTRL_PIN(181, "PORT224", UNIPHIER_PIN_IECTRL_NONE, 566 UNIPHIER_PINCTRL_PIN(181, "PORT224", UNIPHIER_PIN_IECTRL_NONE,
569 -1, UNIPHIER_PIN_DRV_FIXED_8, 567 -1, UNIPHIER_PIN_DRV_FIXED8,
570 181, UNIPHIER_PIN_PULL_DOWN), 568 181, UNIPHIER_PIN_PULL_DOWN),
571 UNIPHIER_PINCTRL_PIN(182, "PORT225", UNIPHIER_PIN_IECTRL_NONE, 569 UNIPHIER_PINCTRL_PIN(182, "PORT225", UNIPHIER_PIN_IECTRL_NONE,
572 -1, UNIPHIER_PIN_DRV_FIXED_8, 570 -1, UNIPHIER_PIN_DRV_FIXED8,
573 182, UNIPHIER_PIN_PULL_DOWN), 571 182, UNIPHIER_PIN_PULL_DOWN),
574 UNIPHIER_PINCTRL_PIN(183, "PORT226", UNIPHIER_PIN_IECTRL_NONE, 572 UNIPHIER_PINCTRL_PIN(183, "PORT226", UNIPHIER_PIN_IECTRL_NONE,
575 -1, UNIPHIER_PIN_DRV_FIXED_8, 573 -1, UNIPHIER_PIN_DRV_FIXED8,
576 183, UNIPHIER_PIN_PULL_DOWN), 574 183, UNIPHIER_PIN_PULL_DOWN),
577 UNIPHIER_PINCTRL_PIN(184, "PORT227", UNIPHIER_PIN_IECTRL_NONE, 575 UNIPHIER_PINCTRL_PIN(184, "PORT227", UNIPHIER_PIN_IECTRL_NONE,
578 -1, UNIPHIER_PIN_DRV_FIXED_8, 576 -1, UNIPHIER_PIN_DRV_FIXED8,
579 184, UNIPHIER_PIN_PULL_DOWN), 577 184, UNIPHIER_PIN_PULL_DOWN),
580 UNIPHIER_PINCTRL_PIN(185, "PORT230", UNIPHIER_PIN_IECTRL_NONE, 578 UNIPHIER_PINCTRL_PIN(185, "PORT230", UNIPHIER_PIN_IECTRL_NONE,
581 -1, UNIPHIER_PIN_DRV_FIXED_8, 579 -1, UNIPHIER_PIN_DRV_FIXED8,
582 185, UNIPHIER_PIN_PULL_DOWN), 580 185, UNIPHIER_PIN_PULL_DOWN),
583 UNIPHIER_PINCTRL_PIN(186, "FANPWM", UNIPHIER_PIN_IECTRL_NONE, 581 UNIPHIER_PINCTRL_PIN(186, "FANPWM", UNIPHIER_PIN_IECTRL_NONE,
584 -1, UNIPHIER_PIN_DRV_FIXED_8, 582 -1, UNIPHIER_PIN_DRV_FIXED8,
585 186, UNIPHIER_PIN_PULL_DOWN), 583 186, UNIPHIER_PIN_PULL_DOWN),
586 UNIPHIER_PINCTRL_PIN(187, "HRDDCSDA0", 0, 584 UNIPHIER_PINCTRL_PIN(187, "HRDDCSDA0", 0,
587 187, UNIPHIER_PIN_DRV_4_8, 585 187, UNIPHIER_PIN_DRV_1BIT,
588 187, UNIPHIER_PIN_PULL_DOWN), 586 187, UNIPHIER_PIN_PULL_DOWN),
589 UNIPHIER_PINCTRL_PIN(188, "HRDDCSCL0", 0, 587 UNIPHIER_PINCTRL_PIN(188, "HRDDCSCL0", 0,
590 188, UNIPHIER_PIN_DRV_4_8, 588 188, UNIPHIER_PIN_DRV_1BIT,
591 188, UNIPHIER_PIN_PULL_DOWN), 589 188, UNIPHIER_PIN_PULL_DOWN),
592 UNIPHIER_PINCTRL_PIN(189, "HRDDCSDA1", 0, 590 UNIPHIER_PINCTRL_PIN(189, "HRDDCSDA1", 0,
593 189, UNIPHIER_PIN_DRV_4_8, 591 189, UNIPHIER_PIN_DRV_1BIT,
594 189, UNIPHIER_PIN_PULL_DOWN), 592 189, UNIPHIER_PIN_PULL_DOWN),
595 UNIPHIER_PINCTRL_PIN(190, "HRDDCSCL1", 0, 593 UNIPHIER_PINCTRL_PIN(190, "HRDDCSCL1", 0,
596 190, UNIPHIER_PIN_DRV_4_8, 594 190, UNIPHIER_PIN_DRV_1BIT,
597 190, UNIPHIER_PIN_PULL_DOWN), 595 190, UNIPHIER_PIN_PULL_DOWN),
598 UNIPHIER_PINCTRL_PIN(191, "HTDDCSDA0", 0, 596 UNIPHIER_PINCTRL_PIN(191, "HTDDCSDA0", 0,
599 191, UNIPHIER_PIN_DRV_4_8, 597 191, UNIPHIER_PIN_DRV_1BIT,
600 191, UNIPHIER_PIN_PULL_DOWN), 598 191, UNIPHIER_PIN_PULL_DOWN),
601 UNIPHIER_PINCTRL_PIN(192, "HTDDCSCL0", 0, 599 UNIPHIER_PINCTRL_PIN(192, "HTDDCSCL0", 0,
602 192, UNIPHIER_PIN_DRV_4_8, 600 192, UNIPHIER_PIN_DRV_1BIT,
603 192, UNIPHIER_PIN_PULL_DOWN), 601 192, UNIPHIER_PIN_PULL_DOWN),
604 UNIPHIER_PINCTRL_PIN(193, "HTDDCSDA1", 0, 602 UNIPHIER_PINCTRL_PIN(193, "HTDDCSDA1", 0,
605 193, UNIPHIER_PIN_DRV_4_8, 603 193, UNIPHIER_PIN_DRV_1BIT,
606 193, UNIPHIER_PIN_PULL_DOWN), 604 193, UNIPHIER_PIN_PULL_DOWN),
607 UNIPHIER_PINCTRL_PIN(194, "HTDDCSCL1", 0, 605 UNIPHIER_PINCTRL_PIN(194, "HTDDCSCL1", 0,
608 194, UNIPHIER_PIN_DRV_4_8, 606 194, UNIPHIER_PIN_DRV_1BIT,
609 194, UNIPHIER_PIN_PULL_DOWN), 607 194, UNIPHIER_PIN_PULL_DOWN),
610 UNIPHIER_PINCTRL_PIN(195, "PORT241", 0, 608 UNIPHIER_PINCTRL_PIN(195, "PORT241", 0,
611 195, UNIPHIER_PIN_DRV_4_8, 609 195, UNIPHIER_PIN_DRV_1BIT,
612 195, UNIPHIER_PIN_PULL_DOWN), 610 195, UNIPHIER_PIN_PULL_DOWN),
613 UNIPHIER_PINCTRL_PIN(196, "PORT242", 0, 611 UNIPHIER_PINCTRL_PIN(196, "PORT242", 0,
614 196, UNIPHIER_PIN_DRV_4_8, 612 196, UNIPHIER_PIN_DRV_1BIT,
615 196, UNIPHIER_PIN_PULL_DOWN), 613 196, UNIPHIER_PIN_PULL_DOWN),
616 UNIPHIER_PINCTRL_PIN(197, "PORT243", 0, 614 UNIPHIER_PINCTRL_PIN(197, "PORT243", 0,
617 197, UNIPHIER_PIN_DRV_4_8, 615 197, UNIPHIER_PIN_DRV_1BIT,
618 197, UNIPHIER_PIN_PULL_DOWN), 616 197, UNIPHIER_PIN_PULL_DOWN),
619 UNIPHIER_PINCTRL_PIN(198, "MVSYNC", 0, 617 UNIPHIER_PINCTRL_PIN(198, "MVSYNC", 0,
620 198, UNIPHIER_PIN_DRV_4_8, 618 198, UNIPHIER_PIN_DRV_1BIT,
621 198, UNIPHIER_PIN_PULL_DOWN), 619 198, UNIPHIER_PIN_PULL_DOWN),
622 UNIPHIER_PINCTRL_PIN(199, "SPISYNC0", UNIPHIER_PIN_IECTRL_NONE, 620 UNIPHIER_PINCTRL_PIN(199, "SPISYNC0", UNIPHIER_PIN_IECTRL_NONE,
623 199, UNIPHIER_PIN_DRV_4_8, 621 199, UNIPHIER_PIN_DRV_1BIT,
624 199, UNIPHIER_PIN_PULL_DOWN), 622 199, UNIPHIER_PIN_PULL_DOWN),
625 UNIPHIER_PINCTRL_PIN(200, "SPISCLK0", UNIPHIER_PIN_IECTRL_NONE, 623 UNIPHIER_PINCTRL_PIN(200, "SPISCLK0", UNIPHIER_PIN_IECTRL_NONE,
626 200, UNIPHIER_PIN_DRV_4_8, 624 200, UNIPHIER_PIN_DRV_1BIT,
627 200, UNIPHIER_PIN_PULL_DOWN), 625 200, UNIPHIER_PIN_PULL_DOWN),
628 UNIPHIER_PINCTRL_PIN(201, "SPITXD0", UNIPHIER_PIN_IECTRL_NONE, 626 UNIPHIER_PINCTRL_PIN(201, "SPITXD0", UNIPHIER_PIN_IECTRL_NONE,
629 201, UNIPHIER_PIN_DRV_4_8, 627 201, UNIPHIER_PIN_DRV_1BIT,
630 201, UNIPHIER_PIN_PULL_DOWN), 628 201, UNIPHIER_PIN_PULL_DOWN),
631 UNIPHIER_PINCTRL_PIN(202, "SPIRXD0", UNIPHIER_PIN_IECTRL_NONE, 629 UNIPHIER_PINCTRL_PIN(202, "SPIRXD0", UNIPHIER_PIN_IECTRL_NONE,
632 202, UNIPHIER_PIN_DRV_4_8, 630 202, UNIPHIER_PIN_DRV_1BIT,
633 202, UNIPHIER_PIN_PULL_DOWN), 631 202, UNIPHIER_PIN_PULL_DOWN),
634 UNIPHIER_PINCTRL_PIN(203, "CK54EXI", UNIPHIER_PIN_IECTRL_NONE, 632 UNIPHIER_PINCTRL_PIN(203, "CK54EXI", UNIPHIER_PIN_IECTRL_NONE,
635 -1, UNIPHIER_PIN_DRV_FIXED_8, 633 -1, UNIPHIER_PIN_DRV_FIXED8,
636 203, UNIPHIER_PIN_PULL_DOWN), 634 203, UNIPHIER_PIN_PULL_DOWN),
637 UNIPHIER_PINCTRL_PIN(204, "AEXCKA1", UNIPHIER_PIN_IECTRL_NONE, 635 UNIPHIER_PINCTRL_PIN(204, "AEXCKA1", UNIPHIER_PIN_IECTRL_NONE,
638 -1, UNIPHIER_PIN_DRV_FIXED_8, 636 -1, UNIPHIER_PIN_DRV_FIXED8,
639 204, UNIPHIER_PIN_PULL_DOWN), 637 204, UNIPHIER_PIN_PULL_DOWN),
640 UNIPHIER_PINCTRL_PIN(205, "AEXCKA2", UNIPHIER_PIN_IECTRL_NONE, 638 UNIPHIER_PINCTRL_PIN(205, "AEXCKA2", UNIPHIER_PIN_IECTRL_NONE,
641 -1, UNIPHIER_PIN_DRV_FIXED_8, 639 -1, UNIPHIER_PIN_DRV_FIXED8,
642 205, UNIPHIER_PIN_PULL_DOWN), 640 205, UNIPHIER_PIN_PULL_DOWN),
643 UNIPHIER_PINCTRL_PIN(206, "CK27EXI", UNIPHIER_PIN_IECTRL_NONE, 641 UNIPHIER_PINCTRL_PIN(206, "CK27EXI", UNIPHIER_PIN_IECTRL_NONE,
644 -1, UNIPHIER_PIN_DRV_FIXED_8, 642 -1, UNIPHIER_PIN_DRV_FIXED8,
645 206, UNIPHIER_PIN_PULL_DOWN), 643 206, UNIPHIER_PIN_PULL_DOWN),
646 UNIPHIER_PINCTRL_PIN(207, "STCDIN", 0, 644 UNIPHIER_PINCTRL_PIN(207, "STCDIN", 0,
647 207, UNIPHIER_PIN_DRV_4_8, 645 207, UNIPHIER_PIN_DRV_1BIT,
648 207, UNIPHIER_PIN_PULL_DOWN), 646 207, UNIPHIER_PIN_PULL_DOWN),
649 UNIPHIER_PINCTRL_PIN(208, "PHSYNI", 0, 647 UNIPHIER_PINCTRL_PIN(208, "PHSYNI", 0,
650 208, UNIPHIER_PIN_DRV_4_8, 648 208, UNIPHIER_PIN_DRV_1BIT,
651 208, UNIPHIER_PIN_PULL_DOWN), 649 208, UNIPHIER_PIN_PULL_DOWN),
652 UNIPHIER_PINCTRL_PIN(209, "PVSYNI", 0, 650 UNIPHIER_PINCTRL_PIN(209, "PVSYNI", 0,
653 209, UNIPHIER_PIN_DRV_4_8, 651 209, UNIPHIER_PIN_DRV_1BIT,
654 209, UNIPHIER_PIN_PULL_DOWN), 652 209, UNIPHIER_PIN_PULL_DOWN),
655 UNIPHIER_PINCTRL_PIN(210, "MVSYN", UNIPHIER_PIN_IECTRL_NONE, 653 UNIPHIER_PINCTRL_PIN(210, "MVSYN", UNIPHIER_PIN_IECTRL_NONE,
656 210, UNIPHIER_PIN_DRV_4_8, 654 210, UNIPHIER_PIN_DRV_1BIT,
657 210, UNIPHIER_PIN_PULL_DOWN), 655 210, UNIPHIER_PIN_PULL_DOWN),
658 UNIPHIER_PINCTRL_PIN(211, "STCV", UNIPHIER_PIN_IECTRL_NONE, 656 UNIPHIER_PINCTRL_PIN(211, "STCV", UNIPHIER_PIN_IECTRL_NONE,
659 211, UNIPHIER_PIN_DRV_4_8, 657 211, UNIPHIER_PIN_DRV_1BIT,
660 211, UNIPHIER_PIN_PULL_DOWN), 658 211, UNIPHIER_PIN_PULL_DOWN),
661 UNIPHIER_PINCTRL_PIN(212, "PORT262", UNIPHIER_PIN_IECTRL_NONE, 659 UNIPHIER_PINCTRL_PIN(212, "PORT262", UNIPHIER_PIN_IECTRL_NONE,
662 212, UNIPHIER_PIN_DRV_4_8, 660 212, UNIPHIER_PIN_DRV_1BIT,
663 212, UNIPHIER_PIN_PULL_DOWN), 661 212, UNIPHIER_PIN_PULL_DOWN),
664 UNIPHIER_PINCTRL_PIN(213, "USB0VBUS_IRQ", UNIPHIER_PIN_IECTRL_NONE, 662 UNIPHIER_PINCTRL_PIN(213, "USB0VBUS_IRQ", UNIPHIER_PIN_IECTRL_NONE,
665 -1, UNIPHIER_PIN_DRV_FIXED_4, 663 -1, UNIPHIER_PIN_DRV_FIXED4,
666 213, UNIPHIER_PIN_PULL_DOWN), 664 213, UNIPHIER_PIN_PULL_DOWN),
667 UNIPHIER_PINCTRL_PIN(214, "USB1VBUS_IRQ", UNIPHIER_PIN_IECTRL_NONE, 665 UNIPHIER_PINCTRL_PIN(214, "USB1VBUS_IRQ", UNIPHIER_PIN_IECTRL_NONE,
668 -1, UNIPHIER_PIN_DRV_FIXED_4, 666 -1, UNIPHIER_PIN_DRV_FIXED4,
669 214, UNIPHIER_PIN_PULL_DOWN), 667 214, UNIPHIER_PIN_PULL_DOWN),
670 UNIPHIER_PINCTRL_PIN(215, "PORT265", UNIPHIER_PIN_IECTRL_NONE, 668 UNIPHIER_PINCTRL_PIN(215, "PORT265", UNIPHIER_PIN_IECTRL_NONE,
671 215, UNIPHIER_PIN_DRV_4_8, 669 215, UNIPHIER_PIN_DRV_1BIT,
672 215, UNIPHIER_PIN_PULL_DOWN), 670 215, UNIPHIER_PIN_PULL_DOWN),
673 UNIPHIER_PINCTRL_PIN(216, "CK25O", 0, 671 UNIPHIER_PINCTRL_PIN(216, "CK25O", 0,
674 216, UNIPHIER_PIN_DRV_4_8, 672 216, UNIPHIER_PIN_DRV_1BIT,
675 216, UNIPHIER_PIN_PULL_DOWN), 673 216, UNIPHIER_PIN_PULL_DOWN),
676 UNIPHIER_PINCTRL_PIN(217, "TXD0", 0, 674 UNIPHIER_PINCTRL_PIN(217, "TXD0", 0,
677 217, UNIPHIER_PIN_DRV_4_8, 675 217, UNIPHIER_PIN_DRV_1BIT,
678 217, UNIPHIER_PIN_PULL_DOWN), 676 217, UNIPHIER_PIN_PULL_DOWN),
679 UNIPHIER_PINCTRL_PIN(218, "RXD0", 0, 677 UNIPHIER_PINCTRL_PIN(218, "RXD0", 0,
680 218, UNIPHIER_PIN_DRV_4_8, 678 218, UNIPHIER_PIN_DRV_1BIT,
681 218, UNIPHIER_PIN_PULL_DOWN), 679 218, UNIPHIER_PIN_PULL_DOWN),
682 UNIPHIER_PINCTRL_PIN(219, "TXD3", 0, 680 UNIPHIER_PINCTRL_PIN(219, "TXD3", 0,
683 219, UNIPHIER_PIN_DRV_4_8, 681 219, UNIPHIER_PIN_DRV_1BIT,
684 219, UNIPHIER_PIN_PULL_DOWN), 682 219, UNIPHIER_PIN_PULL_DOWN),
685 UNIPHIER_PINCTRL_PIN(220, "RXD3", 0, 683 UNIPHIER_PINCTRL_PIN(220, "RXD3", 0,
686 220, UNIPHIER_PIN_DRV_4_8, 684 220, UNIPHIER_PIN_DRV_1BIT,
687 220, UNIPHIER_PIN_PULL_DOWN), 685 220, UNIPHIER_PIN_PULL_DOWN),
688 UNIPHIER_PINCTRL_PIN(221, "PORT273", 0, 686 UNIPHIER_PINCTRL_PIN(221, "PORT273", 0,
689 221, UNIPHIER_PIN_DRV_4_8, 687 221, UNIPHIER_PIN_DRV_1BIT,
690 221, UNIPHIER_PIN_PULL_DOWN), 688 221, UNIPHIER_PIN_PULL_DOWN),
691 UNIPHIER_PINCTRL_PIN(222, "STCDOUTC", 0, 689 UNIPHIER_PINCTRL_PIN(222, "STCDOUTC", 0,
692 222, UNIPHIER_PIN_DRV_4_8, 690 222, UNIPHIER_PIN_DRV_1BIT,
693 222, UNIPHIER_PIN_PULL_DOWN), 691 222, UNIPHIER_PIN_PULL_DOWN),
694 UNIPHIER_PINCTRL_PIN(223, "PORT274", 0, 692 UNIPHIER_PINCTRL_PIN(223, "PORT274", 0,
695 223, UNIPHIER_PIN_DRV_4_8, 693 223, UNIPHIER_PIN_DRV_1BIT,
696 223, UNIPHIER_PIN_PULL_DOWN), 694 223, UNIPHIER_PIN_PULL_DOWN),
697 UNIPHIER_PINCTRL_PIN(224, "PORT275", 0, 695 UNIPHIER_PINCTRL_PIN(224, "PORT275", 0,
698 224, UNIPHIER_PIN_DRV_4_8, 696 224, UNIPHIER_PIN_DRV_1BIT,
699 224, UNIPHIER_PIN_PULL_DOWN), 697 224, UNIPHIER_PIN_PULL_DOWN),
700 UNIPHIER_PINCTRL_PIN(225, "PORT276", 0, 698 UNIPHIER_PINCTRL_PIN(225, "PORT276", 0,
701 225, UNIPHIER_PIN_DRV_4_8, 699 225, UNIPHIER_PIN_DRV_1BIT,
702 225, UNIPHIER_PIN_PULL_DOWN), 700 225, UNIPHIER_PIN_PULL_DOWN),
703 UNIPHIER_PINCTRL_PIN(226, "PORT277", 0, 701 UNIPHIER_PINCTRL_PIN(226, "PORT277", 0,
704 226, UNIPHIER_PIN_DRV_4_8, 702 226, UNIPHIER_PIN_DRV_1BIT,
705 226, UNIPHIER_PIN_PULL_DOWN), 703 226, UNIPHIER_PIN_PULL_DOWN),
706 UNIPHIER_PINCTRL_PIN(227, "PORT280", 0, 704 UNIPHIER_PINCTRL_PIN(227, "PORT280", 0,
707 227, UNIPHIER_PIN_DRV_4_8, 705 227, UNIPHIER_PIN_DRV_1BIT,
708 227, UNIPHIER_PIN_PULL_DOWN), 706 227, UNIPHIER_PIN_PULL_DOWN),
709 UNIPHIER_PINCTRL_PIN(228, "PORT281", 0, 707 UNIPHIER_PINCTRL_PIN(228, "PORT281", 0,
710 228, UNIPHIER_PIN_DRV_4_8, 708 228, UNIPHIER_PIN_DRV_1BIT,
711 228, UNIPHIER_PIN_PULL_DOWN), 709 228, UNIPHIER_PIN_PULL_DOWN),
712 UNIPHIER_PINCTRL_PIN(229, "PORT282", 0, 710 UNIPHIER_PINCTRL_PIN(229, "PORT282", 0,
713 229, UNIPHIER_PIN_DRV_4_8, 711 229, UNIPHIER_PIN_DRV_1BIT,
714 229, UNIPHIER_PIN_PULL_DOWN), 712 229, UNIPHIER_PIN_PULL_DOWN),
715 UNIPHIER_PINCTRL_PIN(230, "PORT283", 0, 713 UNIPHIER_PINCTRL_PIN(230, "PORT283", 0,
716 230, UNIPHIER_PIN_DRV_4_8, 714 230, UNIPHIER_PIN_DRV_1BIT,
717 230, UNIPHIER_PIN_PULL_DOWN), 715 230, UNIPHIER_PIN_PULL_DOWN),
718 UNIPHIER_PINCTRL_PIN(231, "PORT284", 0, 716 UNIPHIER_PINCTRL_PIN(231, "PORT284", 0,
719 231, UNIPHIER_PIN_DRV_4_8, 717 231, UNIPHIER_PIN_DRV_1BIT,
720 231, UNIPHIER_PIN_PULL_DOWN), 718 231, UNIPHIER_PIN_PULL_DOWN),
721 UNIPHIER_PINCTRL_PIN(232, "PORT285", 0, 719 UNIPHIER_PINCTRL_PIN(232, "PORT285", 0,
722 232, UNIPHIER_PIN_DRV_4_8, 720 232, UNIPHIER_PIN_DRV_1BIT,
723 232, UNIPHIER_PIN_PULL_DOWN), 721 232, UNIPHIER_PIN_PULL_DOWN),
724 UNIPHIER_PINCTRL_PIN(233, "T0HPD", 0, 722 UNIPHIER_PINCTRL_PIN(233, "T0HPD", 0,
725 233, UNIPHIER_PIN_DRV_4_8, 723 233, UNIPHIER_PIN_DRV_1BIT,
726 233, UNIPHIER_PIN_PULL_DOWN), 724 233, UNIPHIER_PIN_PULL_DOWN),
727 UNIPHIER_PINCTRL_PIN(234, "T1HPD", 0, 725 UNIPHIER_PINCTRL_PIN(234, "T1HPD", 0,
728 234, UNIPHIER_PIN_DRV_4_8, 726 234, UNIPHIER_PIN_DRV_1BIT,
729 234, UNIPHIER_PIN_PULL_DOWN), 727 234, UNIPHIER_PIN_PULL_DOWN),
730}; 728};
731 729
732static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; 730static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42};
733static const unsigned emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9}; 731static const int emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9};
734static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; 732static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46};
735static const unsigned emmc_dat8_muxvals[] = {9, 9, 9, 9}; 733static const int emmc_dat8_muxvals[] = {9, 9, 9, 9};
734static const unsigned ether_mii_pins[] = {143, 144, 145, 146, 147, 148, 149,
735 150, 151, 152, 153, 154, 155, 156,
736 158, 159, 199, 200, 201, 202};
737static const int ether_mii_muxvals[] = {8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10,
738 10, 10, 10, 10, 10, 12, 12, 12, 12};
739static const unsigned ether_rgmii_pins[] = {143, 144, 145, 146, 147, 148, 149,
740 150, 151, 152, 153, 154, 155, 156,
741 157, 158};
742static const int ether_rgmii_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
743 8, 8, 8, 8};
744static const unsigned ether_rmii_pins[] = {143, 144, 145, 146, 147, 148, 149,
745 150, 152, 154, 155, 158};
746static const int ether_rmii_muxvals[] = {8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9};
736static const unsigned i2c0_pins[] = {109, 110}; 747static const unsigned i2c0_pins[] = {109, 110};
737static const unsigned i2c0_muxvals[] = {8, 8}; 748static const int i2c0_muxvals[] = {8, 8};
738static const unsigned i2c1_pins[] = {111, 112}; 749static const unsigned i2c1_pins[] = {111, 112};
739static const unsigned i2c1_muxvals[] = {8, 8}; 750static const int i2c1_muxvals[] = {8, 8};
740static const unsigned i2c2_pins[] = {171, 172}; 751static const unsigned i2c2_pins[] = {171, 172};
741static const unsigned i2c2_muxvals[] = {8, 8}; 752static const int i2c2_muxvals[] = {8, 8};
742static const unsigned i2c3_pins[] = {159, 160}; 753static const unsigned i2c3_pins[] = {159, 160};
743static const unsigned i2c3_muxvals[] = {8, 8}; 754static const int i2c3_muxvals[] = {8, 8};
744static const unsigned i2c5_pins[] = {183, 184}; 755static const unsigned i2c5_pins[] = {183, 184};
745static const unsigned i2c5_muxvals[] = {11, 11}; 756static const int i2c5_muxvals[] = {11, 11};
746static const unsigned i2c6_pins[] = {185, 186}; 757static const unsigned i2c6_pins[] = {185, 186};
747static const unsigned i2c6_muxvals[] = {11, 11}; 758static const int i2c6_muxvals[] = {11, 11};
748static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41, 759static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41,
749 42, 43, 44, 45, 46}; 760 42, 43, 44, 45, 46};
750static const unsigned nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 761static const int nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8};
751 8, 8};
752static const unsigned nand_cs1_pins[] = {37, 38}; 762static const unsigned nand_cs1_pins[] = {37, 38};
753static const unsigned nand_cs1_muxvals[] = {8, 8}; 763static const int nand_cs1_muxvals[] = {8, 8};
754static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55}; 764static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55};
755static const unsigned sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8}; 765static const int sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8};
766static const unsigned system_bus_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
767 11, 12, 13};
768static const int system_bus_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
769 8};
770static const unsigned system_bus_cs1_pins[] = {14};
771static const int system_bus_cs1_muxvals[] = {8};
756static const unsigned uart0_pins[] = {217, 218}; 772static const unsigned uart0_pins[] = {217, 218};
757static const unsigned uart0_muxvals[] = {8, 8}; 773static const int uart0_muxvals[] = {8, 8};
758static const unsigned uart0b_pins[] = {179, 180}; 774static const unsigned uart0b_pins[] = {179, 180};
759static const unsigned uart0b_muxvals[] = {10, 10}; 775static const int uart0b_muxvals[] = {10, 10};
760static const unsigned uart1_pins[] = {115, 116}; 776static const unsigned uart1_pins[] = {115, 116};
761static const unsigned uart1_muxvals[] = {8, 8}; 777static const int uart1_muxvals[] = {8, 8};
762static const unsigned uart2_pins[] = {113, 114}; 778static const unsigned uart2_pins[] = {113, 114};
763static const unsigned uart2_muxvals[] = {8, 8}; 779static const int uart2_muxvals[] = {8, 8};
764static const unsigned uart3_pins[] = {219, 220}; 780static const unsigned uart3_pins[] = {219, 220};
765static const unsigned uart3_muxvals[] = {8, 8}; 781static const int uart3_muxvals[] = {8, 8};
766static const unsigned uart3b_pins[] = {181, 182}; 782static const unsigned uart3b_pins[] = {181, 182};
767static const unsigned uart3b_muxvals[] = {10, 10}; 783static const int uart3b_muxvals[] = {10, 10};
768static const unsigned usb0_pins[] = {56, 57}; 784static const unsigned usb0_pins[] = {56, 57};
769static const unsigned usb0_muxvals[] = {8, 8}; 785static const int usb0_muxvals[] = {8, 8};
770static const unsigned usb1_pins[] = {58, 59}; 786static const unsigned usb1_pins[] = {58, 59};
771static const unsigned usb1_muxvals[] = {8, 8}; 787static const int usb1_muxvals[] = {8, 8};
772static const unsigned usb2_pins[] = {60, 61}; 788static const unsigned usb2_pins[] = {60, 61};
773static const unsigned usb2_muxvals[] = {8, 8}; 789static const int usb2_muxvals[] = {8, 8};
774static const unsigned usb3_pins[] = {62, 63}; 790static const unsigned usb3_pins[] = {62, 63};
775static const unsigned usb3_muxvals[] = {8, 8}; 791static const int usb3_muxvals[] = {8, 8};
776static const unsigned port_range0_pins[] = { 792static const unsigned port_range0_pins[] = {
777 127, 128, 129, 130, 131, 132, 133, 134, /* PORT0x */ 793 127, 128, 129, 130, 131, 132, 133, 134, /* PORT0x */
778 135, 136, 137, 138, 139, 140, 141, 142, /* PORT1x */ 794 135, 136, 137, 138, 139, 140, 141, 142, /* PORT1x */
@@ -786,7 +802,7 @@ static const unsigned port_range0_pins[] = {
786 61, 62, 63, 64, 65, 66, 67, 68, /* PORT9x */ 802 61, 62, 63, 64, 65, 66, 67, 68, /* PORT9x */
787 69, 70, 71, 76, 77, 78, 79, 80, /* PORT10x */ 803 69, 70, 71, 76, 77, 78, 79, 80, /* PORT10x */
788}; 804};
789static const unsigned port_range0_muxvals[] = { 805static const int port_range0_muxvals[] = {
790 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 806 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */
791 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 807 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */
792 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ 808 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */
@@ -818,7 +834,7 @@ static const unsigned port_range1_pins[] = {
818 218, 219, 220, 221, 223, 224, 225, 226, /* PORT27x */ 834 218, 219, 220, 221, 223, 224, 225, 226, /* PORT27x */
819 227, 228, 229, 230, 231, 232, 233, 234, /* PORT28x */ 835 227, 228, 229, 230, 231, 232, 233, 234, /* PORT28x */
820}; 836};
821static const unsigned port_range1_muxvals[] = { 837static const int port_range1_muxvals[] = {
822 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */ 838 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */
823 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */ 839 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */
824 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */ 840 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */
@@ -842,15 +858,18 @@ static const unsigned xirq_pins[] = {
842 126, 72, 73, 92, 177, 93, 94, 176, /* XIRQ8-15 */ 858 126, 72, 73, 92, 177, 93, 94, 176, /* XIRQ8-15 */
843 74, 91, 27, 28, 29, 75, 20, 26, /* XIRQ16-23 */ 859 74, 91, 27, 28, 29, 75, 20, 26, /* XIRQ16-23 */
844}; 860};
845static const unsigned xirq_muxvals[] = { 861static const int xirq_muxvals[] = {
846 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */ 862 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */
847 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */ 863 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */
848 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */ 864 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */
849}; 865};
850 866
851static const struct uniphier_pinctrl_group proxstream2_groups[] = { 867static const struct uniphier_pinctrl_group uniphier_pxs2_groups[] = {
852 UNIPHIER_PINCTRL_GROUP(emmc), 868 UNIPHIER_PINCTRL_GROUP(emmc),
853 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 869 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
870 UNIPHIER_PINCTRL_GROUP(ether_mii),
871 UNIPHIER_PINCTRL_GROUP(ether_rgmii),
872 UNIPHIER_PINCTRL_GROUP(ether_rmii),
854 UNIPHIER_PINCTRL_GROUP(i2c0), 873 UNIPHIER_PINCTRL_GROUP(i2c0),
855 UNIPHIER_PINCTRL_GROUP(i2c1), 874 UNIPHIER_PINCTRL_GROUP(i2c1),
856 UNIPHIER_PINCTRL_GROUP(i2c2), 875 UNIPHIER_PINCTRL_GROUP(i2c2),
@@ -860,6 +879,8 @@ static const struct uniphier_pinctrl_group proxstream2_groups[] = {
860 UNIPHIER_PINCTRL_GROUP(nand), 879 UNIPHIER_PINCTRL_GROUP(nand),
861 UNIPHIER_PINCTRL_GROUP(nand_cs1), 880 UNIPHIER_PINCTRL_GROUP(nand_cs1),
862 UNIPHIER_PINCTRL_GROUP(sd), 881 UNIPHIER_PINCTRL_GROUP(sd),
882 UNIPHIER_PINCTRL_GROUP(system_bus),
883 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
863 UNIPHIER_PINCTRL_GROUP(uart0), 884 UNIPHIER_PINCTRL_GROUP(uart0),
864 UNIPHIER_PINCTRL_GROUP(uart0b), 885 UNIPHIER_PINCTRL_GROUP(uart0b),
865 UNIPHIER_PINCTRL_GROUP(uart1), 886 UNIPHIER_PINCTRL_GROUP(uart1),
@@ -1124,6 +1145,9 @@ static const struct uniphier_pinctrl_group proxstream2_groups[] = {
1124}; 1145};
1125 1146
1126static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 1147static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
1148static const char * const ether_mii_groups[] = {"ether_mii"};
1149static const char * const ether_rgmii_groups[] = {"ether_rgmii"};
1150static const char * const ether_rmii_groups[] = {"ether_rmii"};
1127static const char * const i2c0_groups[] = {"i2c0"}; 1151static const char * const i2c0_groups[] = {"i2c0"};
1128static const char * const i2c1_groups[] = {"i2c1"}; 1152static const char * const i2c1_groups[] = {"i2c1"};
1129static const char * const i2c2_groups[] = {"i2c2"}; 1153static const char * const i2c2_groups[] = {"i2c2"};
@@ -1132,6 +1156,8 @@ static const char * const i2c5_groups[] = {"i2c5"};
1132static const char * const i2c6_groups[] = {"i2c6"}; 1156static const char * const i2c6_groups[] = {"i2c6"};
1133static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1157static const char * const nand_groups[] = {"nand", "nand_cs1"};
1134static const char * const sd_groups[] = {"sd"}; 1158static const char * const sd_groups[] = {"sd"};
1159static const char * const system_bus_groups[] = {"system_bus",
1160 "system_bus_cs1"};
1135static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1161static const char * const uart0_groups[] = {"uart0", "uart0b"};
1136static const char * const uart1_groups[] = {"uart1"}; 1162static const char * const uart1_groups[] = {"uart1"};
1137static const char * const uart2_groups[] = {"uart2"}; 1163static const char * const uart2_groups[] = {"uart2"};
@@ -1208,8 +1234,11 @@ static const char * const xirq_groups[] = {
1208 "xirq20", "xirq21", "xirq22", "xirq23", 1234 "xirq20", "xirq21", "xirq22", "xirq23",
1209}; 1235};
1210 1236
1211static const struct uniphier_pinmux_function proxstream2_functions[] = { 1237static const struct uniphier_pinmux_function uniphier_pxs2_functions[] = {
1212 UNIPHIER_PINMUX_FUNCTION(emmc), 1238 UNIPHIER_PINMUX_FUNCTION(emmc),
1239 UNIPHIER_PINMUX_FUNCTION(ether_mii),
1240 UNIPHIER_PINMUX_FUNCTION(ether_rgmii),
1241 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
1213 UNIPHIER_PINMUX_FUNCTION(i2c0), 1242 UNIPHIER_PINMUX_FUNCTION(i2c0),
1214 UNIPHIER_PINMUX_FUNCTION(i2c1), 1243 UNIPHIER_PINMUX_FUNCTION(i2c1),
1215 UNIPHIER_PINMUX_FUNCTION(i2c2), 1244 UNIPHIER_PINMUX_FUNCTION(i2c2),
@@ -1218,6 +1247,7 @@ static const struct uniphier_pinmux_function proxstream2_functions[] = {
1218 UNIPHIER_PINMUX_FUNCTION(i2c6), 1247 UNIPHIER_PINMUX_FUNCTION(i2c6),
1219 UNIPHIER_PINMUX_FUNCTION(nand), 1248 UNIPHIER_PINMUX_FUNCTION(nand),
1220 UNIPHIER_PINMUX_FUNCTION(sd), 1249 UNIPHIER_PINMUX_FUNCTION(sd),
1250 UNIPHIER_PINMUX_FUNCTION(system_bus),
1221 UNIPHIER_PINMUX_FUNCTION(uart0), 1251 UNIPHIER_PINMUX_FUNCTION(uart0),
1222 UNIPHIER_PINMUX_FUNCTION(uart1), 1252 UNIPHIER_PINMUX_FUNCTION(uart1),
1223 UNIPHIER_PINMUX_FUNCTION(uart2), 1253 UNIPHIER_PINMUX_FUNCTION(uart2),
@@ -1230,43 +1260,36 @@ static const struct uniphier_pinmux_function proxstream2_functions[] = {
1230 UNIPHIER_PINMUX_FUNCTION(xirq), 1260 UNIPHIER_PINMUX_FUNCTION(xirq),
1231}; 1261};
1232 1262
1233static struct uniphier_pinctrl_socdata proxstream2_pindata = { 1263static struct uniphier_pinctrl_socdata uniphier_pxs2_pindata = {
1234 .groups = proxstream2_groups, 1264 .pins = uniphier_pxs2_pins,
1235 .groups_count = ARRAY_SIZE(proxstream2_groups), 1265 .npins = ARRAY_SIZE(uniphier_pxs2_pins),
1236 .functions = proxstream2_functions, 1266 .groups = uniphier_pxs2_groups,
1237 .functions_count = ARRAY_SIZE(proxstream2_functions), 1267 .groups_count = ARRAY_SIZE(uniphier_pxs2_groups),
1238 .mux_bits = 8, 1268 .functions = uniphier_pxs2_functions,
1239 .reg_stride = 4, 1269 .functions_count = ARRAY_SIZE(uniphier_pxs2_functions),
1240 .load_pinctrl = false, 1270 .caps = 0,
1241};
1242
1243static struct pinctrl_desc proxstream2_pinctrl_desc = {
1244 .name = DRIVER_NAME,
1245 .pins = proxstream2_pins,
1246 .npins = ARRAY_SIZE(proxstream2_pins),
1247 .owner = THIS_MODULE,
1248}; 1271};
1249 1272
1250static int proxstream2_pinctrl_probe(struct platform_device *pdev) 1273static int uniphier_pxs2_pinctrl_probe(struct platform_device *pdev)
1251{ 1274{
1252 return uniphier_pinctrl_probe(pdev, &proxstream2_pinctrl_desc, 1275 return uniphier_pinctrl_probe(pdev, &uniphier_pxs2_pindata);
1253 &proxstream2_pindata);
1254} 1276}
1255 1277
1256static const struct of_device_id proxstream2_pinctrl_match[] = { 1278static const struct of_device_id uniphier_pxs2_pinctrl_match[] = {
1279 { .compatible = "socionext,uniphier-pxs2-pinctrl" },
1257 { .compatible = "socionext,proxstream2-pinctrl" }, 1280 { .compatible = "socionext,proxstream2-pinctrl" },
1258 { /* sentinel */ } 1281 { /* sentinel */ }
1259}; 1282};
1260MODULE_DEVICE_TABLE(of, proxstream2_pinctrl_match); 1283MODULE_DEVICE_TABLE(of, uniphier_pxs2_pinctrl_match);
1261 1284
1262static struct platform_driver proxstream2_pinctrl_driver = { 1285static struct platform_driver uniphier_pxs2_pinctrl_driver = {
1263 .probe = proxstream2_pinctrl_probe, 1286 .probe = uniphier_pxs2_pinctrl_probe,
1264 .driver = { 1287 .driver = {
1265 .name = DRIVER_NAME, 1288 .name = "uniphier-pxs2-pinctrl",
1266 .of_match_table = proxstream2_pinctrl_match, 1289 .of_match_table = uniphier_pxs2_pinctrl_match,
1267 }, 1290 },
1268}; 1291};
1269module_platform_driver(proxstream2_pinctrl_driver); 1292module_platform_driver(uniphier_pxs2_pinctrl_driver);
1270 1293
1271MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1294MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
1272MODULE_DESCRIPTION("UniPhier ProXstream2 pinctrl driver"); 1295MODULE_DESCRIPTION("UniPhier ProXstream2 pinctrl driver");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c
index ceb7a9899bde..da689d880f46 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c
@@ -19,453 +19,518 @@
19 19
20#include "pinctrl-uniphier.h" 20#include "pinctrl-uniphier.h"
21 21
22#define DRIVER_NAME "ph1-sld8-pinctrl" 22static const struct pinctrl_pin_desc uniphier_sld8_pins[] = {
23
24static const struct pinctrl_pin_desc ph1_sld8_pins[] = {
25 UNIPHIER_PINCTRL_PIN(0, "PCA00", 0, 23 UNIPHIER_PINCTRL_PIN(0, "PCA00", 0,
26 15, UNIPHIER_PIN_DRV_4_8, 24 15, UNIPHIER_PIN_DRV_1BIT,
27 15, UNIPHIER_PIN_PULL_DOWN), 25 15, UNIPHIER_PIN_PULL_DOWN),
28 UNIPHIER_PINCTRL_PIN(1, "PCA01", 0, 26 UNIPHIER_PINCTRL_PIN(1, "PCA01", 0,
29 16, UNIPHIER_PIN_DRV_4_8, 27 16, UNIPHIER_PIN_DRV_1BIT,
30 16, UNIPHIER_PIN_PULL_DOWN), 28 16, UNIPHIER_PIN_PULL_DOWN),
31 UNIPHIER_PINCTRL_PIN(2, "PCA02", 0, 29 UNIPHIER_PINCTRL_PIN(2, "PCA02", 0,
32 17, UNIPHIER_PIN_DRV_4_8, 30 17, UNIPHIER_PIN_DRV_1BIT,
33 17, UNIPHIER_PIN_PULL_DOWN), 31 17, UNIPHIER_PIN_PULL_DOWN),
34 UNIPHIER_PINCTRL_PIN(3, "PCA03", 0, 32 UNIPHIER_PINCTRL_PIN(3, "PCA03", 0,
35 18, UNIPHIER_PIN_DRV_4_8, 33 18, UNIPHIER_PIN_DRV_1BIT,
36 18, UNIPHIER_PIN_PULL_DOWN), 34 18, UNIPHIER_PIN_PULL_DOWN),
37 UNIPHIER_PINCTRL_PIN(4, "PCA04", 0, 35 UNIPHIER_PINCTRL_PIN(4, "PCA04", 0,
38 19, UNIPHIER_PIN_DRV_4_8, 36 19, UNIPHIER_PIN_DRV_1BIT,
39 19, UNIPHIER_PIN_PULL_DOWN), 37 19, UNIPHIER_PIN_PULL_DOWN),
40 UNIPHIER_PINCTRL_PIN(5, "PCA05", 0, 38 UNIPHIER_PINCTRL_PIN(5, "PCA05", 0,
41 20, UNIPHIER_PIN_DRV_4_8, 39 20, UNIPHIER_PIN_DRV_1BIT,
42 20, UNIPHIER_PIN_PULL_DOWN), 40 20, UNIPHIER_PIN_PULL_DOWN),
43 UNIPHIER_PINCTRL_PIN(6, "PCA06", 0, 41 UNIPHIER_PINCTRL_PIN(6, "PCA06", 0,
44 21, UNIPHIER_PIN_DRV_4_8, 42 21, UNIPHIER_PIN_DRV_1BIT,
45 21, UNIPHIER_PIN_PULL_DOWN), 43 21, UNIPHIER_PIN_PULL_DOWN),
46 UNIPHIER_PINCTRL_PIN(7, "PCA07", 0, 44 UNIPHIER_PINCTRL_PIN(7, "PCA07", 0,
47 22, UNIPHIER_PIN_DRV_4_8, 45 22, UNIPHIER_PIN_DRV_1BIT,
48 22, UNIPHIER_PIN_PULL_DOWN), 46 22, UNIPHIER_PIN_PULL_DOWN),
49 UNIPHIER_PINCTRL_PIN(8, "PCA08", 0, 47 UNIPHIER_PINCTRL_PIN(8, "PCA08", 0,
50 23, UNIPHIER_PIN_DRV_4_8, 48 23, UNIPHIER_PIN_DRV_1BIT,
51 23, UNIPHIER_PIN_PULL_DOWN), 49 23, UNIPHIER_PIN_PULL_DOWN),
52 UNIPHIER_PINCTRL_PIN(9, "PCA09", 0, 50 UNIPHIER_PINCTRL_PIN(9, "PCA09", 0,
53 24, UNIPHIER_PIN_DRV_4_8, 51 24, UNIPHIER_PIN_DRV_1BIT,
54 24, UNIPHIER_PIN_PULL_DOWN), 52 24, UNIPHIER_PIN_PULL_DOWN),
55 UNIPHIER_PINCTRL_PIN(10, "PCA10", 0, 53 UNIPHIER_PINCTRL_PIN(10, "PCA10", 0,
56 25, UNIPHIER_PIN_DRV_4_8, 54 25, UNIPHIER_PIN_DRV_1BIT,
57 25, UNIPHIER_PIN_PULL_DOWN), 55 25, UNIPHIER_PIN_PULL_DOWN),
58 UNIPHIER_PINCTRL_PIN(11, "PCA11", 0, 56 UNIPHIER_PINCTRL_PIN(11, "PCA11", 0,
59 26, UNIPHIER_PIN_DRV_4_8, 57 26, UNIPHIER_PIN_DRV_1BIT,
60 26, UNIPHIER_PIN_PULL_DOWN), 58 26, UNIPHIER_PIN_PULL_DOWN),
61 UNIPHIER_PINCTRL_PIN(12, "PCA12", 0, 59 UNIPHIER_PINCTRL_PIN(12, "PCA12", 0,
62 27, UNIPHIER_PIN_DRV_4_8, 60 27, UNIPHIER_PIN_DRV_1BIT,
63 27, UNIPHIER_PIN_PULL_DOWN), 61 27, UNIPHIER_PIN_PULL_DOWN),
64 UNIPHIER_PINCTRL_PIN(13, "PCA13", 0, 62 UNIPHIER_PINCTRL_PIN(13, "PCA13", 0,
65 28, UNIPHIER_PIN_DRV_4_8, 63 28, UNIPHIER_PIN_DRV_1BIT,
66 28, UNIPHIER_PIN_PULL_DOWN), 64 28, UNIPHIER_PIN_PULL_DOWN),
67 UNIPHIER_PINCTRL_PIN(14, "PCA14", 0, 65 UNIPHIER_PINCTRL_PIN(14, "PCA14", 0,
68 29, UNIPHIER_PIN_DRV_4_8, 66 29, UNIPHIER_PIN_DRV_1BIT,
69 29, UNIPHIER_PIN_PULL_DOWN), 67 29, UNIPHIER_PIN_PULL_DOWN),
70 UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE, 68 UNIPHIER_PINCTRL_PIN(15, "XNFRE_GB", UNIPHIER_PIN_IECTRL_NONE,
71 30, UNIPHIER_PIN_DRV_4_8, 69 30, UNIPHIER_PIN_DRV_1BIT,
72 30, UNIPHIER_PIN_PULL_UP), 70 30, UNIPHIER_PIN_PULL_UP),
73 UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE, 71 UNIPHIER_PINCTRL_PIN(16, "XNFWE_GB", UNIPHIER_PIN_IECTRL_NONE,
74 31, UNIPHIER_PIN_DRV_4_8, 72 31, UNIPHIER_PIN_DRV_1BIT,
75 31, UNIPHIER_PIN_PULL_UP), 73 31, UNIPHIER_PIN_PULL_UP),
76 UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE, 74 UNIPHIER_PINCTRL_PIN(17, "NFALE_GB", UNIPHIER_PIN_IECTRL_NONE,
77 32, UNIPHIER_PIN_DRV_4_8, 75 32, UNIPHIER_PIN_DRV_1BIT,
78 32, UNIPHIER_PIN_PULL_DOWN), 76 32, UNIPHIER_PIN_PULL_DOWN),
79 UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE, 77 UNIPHIER_PINCTRL_PIN(18, "NFCLE_GB", UNIPHIER_PIN_IECTRL_NONE,
80 33, UNIPHIER_PIN_DRV_4_8, 78 33, UNIPHIER_PIN_DRV_1BIT,
81 33, UNIPHIER_PIN_PULL_DOWN), 79 33, UNIPHIER_PIN_PULL_DOWN),
82 UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE, 80 UNIPHIER_PINCTRL_PIN(19, "XNFWP_GB", UNIPHIER_PIN_IECTRL_NONE,
83 34, UNIPHIER_PIN_DRV_4_8, 81 34, UNIPHIER_PIN_DRV_1BIT,
84 34, UNIPHIER_PIN_PULL_DOWN), 82 34, UNIPHIER_PIN_PULL_DOWN),
85 UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE, 83 UNIPHIER_PINCTRL_PIN(20, "XNFCE0_GB", UNIPHIER_PIN_IECTRL_NONE,
86 35, UNIPHIER_PIN_DRV_4_8, 84 35, UNIPHIER_PIN_DRV_1BIT,
87 35, UNIPHIER_PIN_PULL_UP), 85 35, UNIPHIER_PIN_PULL_UP),
88 UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE, 86 UNIPHIER_PINCTRL_PIN(21, "NANDRYBY0_GB", UNIPHIER_PIN_IECTRL_NONE,
89 36, UNIPHIER_PIN_DRV_4_8, 87 36, UNIPHIER_PIN_DRV_1BIT,
90 36, UNIPHIER_PIN_PULL_UP), 88 36, UNIPHIER_PIN_PULL_UP),
91 UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE, 89 UNIPHIER_PINCTRL_PIN(22, "XNFCE1_GB", UNIPHIER_PIN_IECTRL_NONE,
92 0, UNIPHIER_PIN_DRV_8_12_16_20, 90 0, UNIPHIER_PIN_DRV_2BIT,
93 119, UNIPHIER_PIN_PULL_UP), 91 119, UNIPHIER_PIN_PULL_UP),
94 UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE, 92 UNIPHIER_PINCTRL_PIN(23, "NANDRYBY1_GB", UNIPHIER_PIN_IECTRL_NONE,
95 4, UNIPHIER_PIN_DRV_8_12_16_20, 93 1, UNIPHIER_PIN_DRV_2BIT,
96 120, UNIPHIER_PIN_PULL_UP), 94 120, UNIPHIER_PIN_PULL_UP),
97 UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE, 95 UNIPHIER_PINCTRL_PIN(24, "NFD0_GB", UNIPHIER_PIN_IECTRL_NONE,
98 8, UNIPHIER_PIN_DRV_8_12_16_20, 96 2, UNIPHIER_PIN_DRV_2BIT,
99 121, UNIPHIER_PIN_PULL_UP), 97 121, UNIPHIER_PIN_PULL_UP),
100 UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE, 98 UNIPHIER_PINCTRL_PIN(25, "NFD1_GB", UNIPHIER_PIN_IECTRL_NONE,
101 12, UNIPHIER_PIN_DRV_8_12_16_20, 99 3, UNIPHIER_PIN_DRV_2BIT,
102 122, UNIPHIER_PIN_PULL_UP), 100 122, UNIPHIER_PIN_PULL_UP),
103 UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE, 101 UNIPHIER_PINCTRL_PIN(26, "NFD2_GB", UNIPHIER_PIN_IECTRL_NONE,
104 16, UNIPHIER_PIN_DRV_8_12_16_20, 102 4, UNIPHIER_PIN_DRV_2BIT,
105 123, UNIPHIER_PIN_PULL_UP), 103 123, UNIPHIER_PIN_PULL_UP),
106 UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE, 104 UNIPHIER_PINCTRL_PIN(27, "NFD3_GB", UNIPHIER_PIN_IECTRL_NONE,
107 20, UNIPHIER_PIN_DRV_8_12_16_20, 105 5, UNIPHIER_PIN_DRV_2BIT,
108 124, UNIPHIER_PIN_PULL_UP), 106 124, UNIPHIER_PIN_PULL_UP),
109 UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE, 107 UNIPHIER_PINCTRL_PIN(28, "NFD4_GB", UNIPHIER_PIN_IECTRL_NONE,
110 24, UNIPHIER_PIN_DRV_8_12_16_20, 108 6, UNIPHIER_PIN_DRV_2BIT,
111 125, UNIPHIER_PIN_PULL_UP), 109 125, UNIPHIER_PIN_PULL_UP),
112 UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE, 110 UNIPHIER_PINCTRL_PIN(29, "NFD5_GB", UNIPHIER_PIN_IECTRL_NONE,
113 28, UNIPHIER_PIN_DRV_8_12_16_20, 111 7, UNIPHIER_PIN_DRV_2BIT,
114 126, UNIPHIER_PIN_PULL_UP), 112 126, UNIPHIER_PIN_PULL_UP),
115 UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE, 113 UNIPHIER_PINCTRL_PIN(30, "NFD6_GB", UNIPHIER_PIN_IECTRL_NONE,
116 32, UNIPHIER_PIN_DRV_8_12_16_20, 114 8, UNIPHIER_PIN_DRV_2BIT,
117 127, UNIPHIER_PIN_PULL_UP), 115 127, UNIPHIER_PIN_PULL_UP),
118 UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE, 116 UNIPHIER_PINCTRL_PIN(31, "NFD7_GB", UNIPHIER_PIN_IECTRL_NONE,
119 36, UNIPHIER_PIN_DRV_8_12_16_20, 117 9, UNIPHIER_PIN_DRV_2BIT,
120 128, UNIPHIER_PIN_PULL_UP), 118 128, UNIPHIER_PIN_PULL_UP),
121 UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8, 119 UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8,
122 40, UNIPHIER_PIN_DRV_8_12_16_20, 120 10, UNIPHIER_PIN_DRV_2BIT,
123 -1, UNIPHIER_PIN_PULL_NONE), 121 -1, UNIPHIER_PIN_PULL_NONE),
124 UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8, 122 UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8,
125 44, UNIPHIER_PIN_DRV_8_12_16_20, 123 11, UNIPHIER_PIN_DRV_2BIT,
126 -1, UNIPHIER_PIN_PULL_NONE), 124 -1, UNIPHIER_PIN_PULL_NONE),
127 UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8, 125 UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8,
128 48, UNIPHIER_PIN_DRV_8_12_16_20, 126 12, UNIPHIER_PIN_DRV_2BIT,
129 -1, UNIPHIER_PIN_PULL_NONE), 127 -1, UNIPHIER_PIN_PULL_NONE),
130 UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8, 128 UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8,
131 52, UNIPHIER_PIN_DRV_8_12_16_20, 129 13, UNIPHIER_PIN_DRV_2BIT,
132 -1, UNIPHIER_PIN_PULL_NONE), 130 -1, UNIPHIER_PIN_PULL_NONE),
133 UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8, 131 UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8,
134 56, UNIPHIER_PIN_DRV_8_12_16_20, 132 14, UNIPHIER_PIN_DRV_2BIT,
135 -1, UNIPHIER_PIN_PULL_NONE), 133 -1, UNIPHIER_PIN_PULL_NONE),
136 UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8, 134 UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8,
137 60, UNIPHIER_PIN_DRV_8_12_16_20, 135 15, UNIPHIER_PIN_DRV_2BIT,
138 -1, UNIPHIER_PIN_PULL_NONE), 136 -1, UNIPHIER_PIN_PULL_NONE),
139 UNIPHIER_PINCTRL_PIN(38, "SDCD", 8, 137 UNIPHIER_PINCTRL_PIN(38, "SDCD", 8,
140 -1, UNIPHIER_PIN_DRV_FIXED_4, 138 -1, UNIPHIER_PIN_DRV_FIXED4,
141 129, UNIPHIER_PIN_PULL_DOWN), 139 129, UNIPHIER_PIN_PULL_DOWN),
142 UNIPHIER_PINCTRL_PIN(39, "SDWP", 8, 140 UNIPHIER_PINCTRL_PIN(39, "SDWP", 8,
143 -1, UNIPHIER_PIN_DRV_FIXED_4, 141 -1, UNIPHIER_PIN_DRV_FIXED4,
144 130, UNIPHIER_PIN_PULL_DOWN), 142 130, UNIPHIER_PIN_PULL_DOWN),
145 UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9, 143 UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9,
146 -1, UNIPHIER_PIN_DRV_FIXED_4, 144 -1, UNIPHIER_PIN_DRV_FIXED4,
147 131, UNIPHIER_PIN_PULL_DOWN), 145 131, UNIPHIER_PIN_PULL_DOWN),
148 UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0, 146 UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0,
149 37, UNIPHIER_PIN_DRV_4_8, 147 37, UNIPHIER_PIN_DRV_1BIT,
150 37, UNIPHIER_PIN_PULL_DOWN), 148 37, UNIPHIER_PIN_PULL_DOWN),
151 UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0, 149 UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0,
152 38, UNIPHIER_PIN_DRV_4_8, 150 38, UNIPHIER_PIN_DRV_1BIT,
153 38, UNIPHIER_PIN_PULL_DOWN), 151 38, UNIPHIER_PIN_PULL_DOWN),
154 UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0, 152 UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0,
155 39, UNIPHIER_PIN_DRV_4_8, 153 39, UNIPHIER_PIN_DRV_1BIT,
156 39, UNIPHIER_PIN_PULL_DOWN), 154 39, UNIPHIER_PIN_PULL_DOWN),
157 UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0, 155 UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0,
158 40, UNIPHIER_PIN_DRV_4_8, 156 40, UNIPHIER_PIN_DRV_1BIT,
159 40, UNIPHIER_PIN_PULL_DOWN), 157 40, UNIPHIER_PIN_PULL_DOWN),
160 UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0, 158 UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0,
161 41, UNIPHIER_PIN_DRV_4_8, 159 41, UNIPHIER_PIN_DRV_1BIT,
162 41, UNIPHIER_PIN_PULL_DOWN), 160 41, UNIPHIER_PIN_PULL_DOWN),
163 UNIPHIER_PINCTRL_PIN(46, "PCREG", 0, 161 UNIPHIER_PINCTRL_PIN(46, "PCREG", 0,
164 42, UNIPHIER_PIN_DRV_4_8, 162 42, UNIPHIER_PIN_DRV_1BIT,
165 42, UNIPHIER_PIN_PULL_DOWN), 163 42, UNIPHIER_PIN_PULL_DOWN),
166 UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0, 164 UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0,
167 43, UNIPHIER_PIN_DRV_4_8, 165 43, UNIPHIER_PIN_DRV_1BIT,
168 43, UNIPHIER_PIN_PULL_DOWN), 166 43, UNIPHIER_PIN_PULL_DOWN),
169 UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0, 167 UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0,
170 44, UNIPHIER_PIN_DRV_4_8, 168 44, UNIPHIER_PIN_DRV_1BIT,
171 44, UNIPHIER_PIN_PULL_DOWN), 169 44, UNIPHIER_PIN_PULL_DOWN),
172 UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0, 170 UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0,
173 45, UNIPHIER_PIN_DRV_4_8, 171 45, UNIPHIER_PIN_DRV_1BIT,
174 45, UNIPHIER_PIN_PULL_DOWN), 172 45, UNIPHIER_PIN_PULL_DOWN),
175 UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0, 173 UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0,
176 46, UNIPHIER_PIN_DRV_4_8, 174 46, UNIPHIER_PIN_DRV_1BIT,
177 46, UNIPHIER_PIN_PULL_DOWN), 175 46, UNIPHIER_PIN_PULL_DOWN),
178 UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0, 176 UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0,
179 47, UNIPHIER_PIN_DRV_4_8, 177 47, UNIPHIER_PIN_DRV_1BIT,
180 47, UNIPHIER_PIN_PULL_DOWN), 178 47, UNIPHIER_PIN_PULL_DOWN),
181 UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0, 179 UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0,
182 48, UNIPHIER_PIN_DRV_4_8, 180 48, UNIPHIER_PIN_DRV_1BIT,
183 48, UNIPHIER_PIN_PULL_DOWN), 181 48, UNIPHIER_PIN_PULL_DOWN),
184 UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0, 182 UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0,
185 49, UNIPHIER_PIN_DRV_4_8, 183 49, UNIPHIER_PIN_DRV_1BIT,
186 49, UNIPHIER_PIN_PULL_DOWN), 184 49, UNIPHIER_PIN_PULL_DOWN),
187 UNIPHIER_PINCTRL_PIN(54, "PCWE", 0, 185 UNIPHIER_PINCTRL_PIN(54, "PCWE", 0,
188 50, UNIPHIER_PIN_DRV_4_8, 186 50, UNIPHIER_PIN_DRV_1BIT,
189 50, UNIPHIER_PIN_PULL_DOWN), 187 50, UNIPHIER_PIN_PULL_DOWN),
190 UNIPHIER_PINCTRL_PIN(55, "PCOE", 0, 188 UNIPHIER_PINCTRL_PIN(55, "PCOE", 0,
191 51, UNIPHIER_PIN_DRV_4_8, 189 51, UNIPHIER_PIN_DRV_1BIT,
192 51, UNIPHIER_PIN_PULL_DOWN), 190 51, UNIPHIER_PIN_PULL_DOWN),
193 UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0, 191 UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0,
194 52, UNIPHIER_PIN_DRV_4_8, 192 52, UNIPHIER_PIN_DRV_1BIT,
195 52, UNIPHIER_PIN_PULL_DOWN), 193 52, UNIPHIER_PIN_PULL_DOWN),
196 UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0, 194 UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0,
197 53, UNIPHIER_PIN_DRV_4_8, 195 53, UNIPHIER_PIN_DRV_1BIT,
198 53, UNIPHIER_PIN_PULL_DOWN), 196 53, UNIPHIER_PIN_PULL_DOWN),
199 UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0, 197 UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0,
200 54, UNIPHIER_PIN_DRV_4_8, 198 54, UNIPHIER_PIN_DRV_1BIT,
201 54, UNIPHIER_PIN_PULL_DOWN), 199 54, UNIPHIER_PIN_PULL_DOWN),
202 UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0, 200 UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0,
203 55, UNIPHIER_PIN_DRV_4_8, 201 55, UNIPHIER_PIN_DRV_1BIT,
204 55, UNIPHIER_PIN_PULL_DOWN), 202 55, UNIPHIER_PIN_PULL_DOWN),
205 UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0, 203 UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0,
206 56, UNIPHIER_PIN_DRV_4_8, 204 56, UNIPHIER_PIN_DRV_1BIT,
207 56, UNIPHIER_PIN_PULL_DOWN), 205 56, UNIPHIER_PIN_PULL_DOWN),
208 UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0, 206 UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0,
209 57, UNIPHIER_PIN_DRV_4_8, 207 57, UNIPHIER_PIN_DRV_1BIT,
210 57, UNIPHIER_PIN_PULL_DOWN), 208 57, UNIPHIER_PIN_PULL_DOWN),
211 UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0, 209 UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0,
212 58, UNIPHIER_PIN_DRV_4_8, 210 58, UNIPHIER_PIN_DRV_1BIT,
213 58, UNIPHIER_PIN_PULL_DOWN), 211 58, UNIPHIER_PIN_PULL_DOWN),
214 UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0, 212 UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0,
215 59, UNIPHIER_PIN_DRV_4_8, 213 59, UNIPHIER_PIN_DRV_1BIT,
216 59, UNIPHIER_PIN_PULL_DOWN), 214 59, UNIPHIER_PIN_PULL_DOWN),
217 UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0, 215 UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0,
218 60, UNIPHIER_PIN_DRV_4_8, 216 60, UNIPHIER_PIN_DRV_1BIT,
219 60, UNIPHIER_PIN_PULL_DOWN), 217 60, UNIPHIER_PIN_PULL_DOWN),
220 UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0, 218 UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0,
221 61, UNIPHIER_PIN_DRV_4_8, 219 61, UNIPHIER_PIN_DRV_1BIT,
222 61, UNIPHIER_PIN_PULL_DOWN), 220 61, UNIPHIER_PIN_PULL_DOWN),
223 UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0, 221 UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0,
224 62, UNIPHIER_PIN_DRV_4_8, 222 62, UNIPHIER_PIN_DRV_1BIT,
225 62, UNIPHIER_PIN_PULL_DOWN), 223 62, UNIPHIER_PIN_PULL_DOWN),
226 UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0, 224 UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0,
227 63, UNIPHIER_PIN_DRV_4_8, 225 63, UNIPHIER_PIN_DRV_1BIT,
228 63, UNIPHIER_PIN_PULL_DOWN), 226 63, UNIPHIER_PIN_PULL_DOWN),
229 UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0, 227 UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0,
230 64, UNIPHIER_PIN_DRV_4_8, 228 64, UNIPHIER_PIN_DRV_1BIT,
231 64, UNIPHIER_PIN_PULL_DOWN), 229 64, UNIPHIER_PIN_PULL_DOWN),
232 UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0, 230 UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0,
233 65, UNIPHIER_PIN_DRV_4_8, 231 65, UNIPHIER_PIN_DRV_1BIT,
234 65, UNIPHIER_PIN_PULL_DOWN), 232 65, UNIPHIER_PIN_PULL_DOWN),
235 UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0, 233 UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0,
236 66, UNIPHIER_PIN_DRV_4_8, 234 66, UNIPHIER_PIN_DRV_1BIT,
237 66, UNIPHIER_PIN_PULL_DOWN), 235 66, UNIPHIER_PIN_PULL_DOWN),
238 UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0, 236 UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0,
239 67, UNIPHIER_PIN_DRV_4_8, 237 67, UNIPHIER_PIN_DRV_1BIT,
240 67, UNIPHIER_PIN_PULL_DOWN), 238 67, UNIPHIER_PIN_PULL_DOWN),
241 UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0, 239 UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0,
242 68, UNIPHIER_PIN_DRV_4_8, 240 68, UNIPHIER_PIN_DRV_1BIT,
243 68, UNIPHIER_PIN_PULL_DOWN), 241 68, UNIPHIER_PIN_PULL_DOWN),
244 UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0, 242 UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0,
245 69, UNIPHIER_PIN_DRV_4_8, 243 69, UNIPHIER_PIN_DRV_1BIT,
246 69, UNIPHIER_PIN_PULL_DOWN), 244 69, UNIPHIER_PIN_PULL_DOWN),
247 UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0, 245 UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0,
248 70, UNIPHIER_PIN_DRV_4_8, 246 70, UNIPHIER_PIN_DRV_1BIT,
249 70, UNIPHIER_PIN_PULL_DOWN), 247 70, UNIPHIER_PIN_PULL_DOWN),
250 UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0, 248 UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0,
251 71, UNIPHIER_PIN_DRV_4_8, 249 71, UNIPHIER_PIN_DRV_1BIT,
252 71, UNIPHIER_PIN_PULL_DOWN), 250 71, UNIPHIER_PIN_PULL_DOWN),
253 UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0, 251 UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0,
254 72, UNIPHIER_PIN_DRV_4_8, 252 72, UNIPHIER_PIN_DRV_1BIT,
255 72, UNIPHIER_PIN_PULL_DOWN), 253 72, UNIPHIER_PIN_PULL_DOWN),
256 UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0, 254 UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0,
257 73, UNIPHIER_PIN_DRV_4_8, 255 73, UNIPHIER_PIN_DRV_1BIT,
258 73, UNIPHIER_PIN_PULL_DOWN), 256 73, UNIPHIER_PIN_PULL_DOWN),
259 UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0, 257 UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0,
260 74, UNIPHIER_PIN_DRV_4_8, 258 74, UNIPHIER_PIN_DRV_1BIT,
261 74, UNIPHIER_PIN_PULL_DOWN), 259 74, UNIPHIER_PIN_PULL_DOWN),
262 UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0, 260 UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0,
263 75, UNIPHIER_PIN_DRV_4_8, 261 75, UNIPHIER_PIN_DRV_1BIT,
264 75, UNIPHIER_PIN_PULL_DOWN), 262 75, UNIPHIER_PIN_PULL_DOWN),
265 UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0, 263 UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0,
266 76, UNIPHIER_PIN_DRV_4_8, 264 76, UNIPHIER_PIN_DRV_1BIT,
267 76, UNIPHIER_PIN_PULL_DOWN), 265 76, UNIPHIER_PIN_PULL_DOWN),
268 UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0, 266 UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0,
269 77, UNIPHIER_PIN_DRV_4_8, 267 77, UNIPHIER_PIN_DRV_1BIT,
270 77, UNIPHIER_PIN_PULL_DOWN), 268 77, UNIPHIER_PIN_PULL_DOWN),
271 UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0, 269 UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0,
272 78, UNIPHIER_PIN_DRV_4_8, 270 78, UNIPHIER_PIN_DRV_1BIT,
273 78, UNIPHIER_PIN_PULL_DOWN), 271 78, UNIPHIER_PIN_PULL_DOWN),
274 UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0, 272 UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0,
275 79, UNIPHIER_PIN_DRV_4_8, 273 79, UNIPHIER_PIN_DRV_1BIT,
276 79, UNIPHIER_PIN_PULL_DOWN), 274 79, UNIPHIER_PIN_PULL_DOWN),
277 UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0, 275 UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0,
278 80, UNIPHIER_PIN_DRV_4_8, 276 80, UNIPHIER_PIN_DRV_1BIT,
279 80, UNIPHIER_PIN_PULL_DOWN), 277 80, UNIPHIER_PIN_PULL_DOWN),
280 UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0, 278 UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0,
281 81, UNIPHIER_PIN_DRV_4_8, 279 81, UNIPHIER_PIN_DRV_1BIT,
282 81, UNIPHIER_PIN_PULL_DOWN), 280 81, UNIPHIER_PIN_PULL_DOWN),
283 UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0, 281 UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0,
284 82, UNIPHIER_PIN_DRV_4_8, 282 82, UNIPHIER_PIN_DRV_1BIT,
285 82, UNIPHIER_PIN_PULL_DOWN), 283 82, UNIPHIER_PIN_PULL_DOWN),
286 UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0, 284 UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0,
287 83, UNIPHIER_PIN_DRV_4_8, 285 83, UNIPHIER_PIN_DRV_1BIT,
288 83, UNIPHIER_PIN_PULL_DOWN), 286 83, UNIPHIER_PIN_PULL_DOWN),
289 UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0, 287 UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0,
290 84, UNIPHIER_PIN_DRV_4_8, 288 84, UNIPHIER_PIN_DRV_1BIT,
291 84, UNIPHIER_PIN_PULL_DOWN), 289 84, UNIPHIER_PIN_PULL_DOWN),
292 UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0, 290 UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0,
293 85, UNIPHIER_PIN_DRV_4_8, 291 85, UNIPHIER_PIN_DRV_1BIT,
294 85, UNIPHIER_PIN_PULL_DOWN), 292 85, UNIPHIER_PIN_PULL_DOWN),
295 UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0, 293 UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0,
296 86, UNIPHIER_PIN_DRV_4_8, 294 86, UNIPHIER_PIN_DRV_1BIT,
297 86, UNIPHIER_PIN_PULL_DOWN), 295 86, UNIPHIER_PIN_PULL_DOWN),
298 UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0, 296 UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0,
299 87, UNIPHIER_PIN_DRV_4_8, 297 87, UNIPHIER_PIN_DRV_1BIT,
300 87, UNIPHIER_PIN_PULL_DOWN), 298 87, UNIPHIER_PIN_PULL_DOWN),
301 UNIPHIER_PINCTRL_PIN(92, "AGCI", 3, 299 UNIPHIER_PINCTRL_PIN(92, "AGCI", 3,
302 -1, UNIPHIER_PIN_DRV_FIXED_4, 300 -1, UNIPHIER_PIN_DRV_FIXED4,
303 132, UNIPHIER_PIN_PULL_DOWN), 301 132, UNIPHIER_PIN_PULL_DOWN),
304 UNIPHIER_PINCTRL_PIN(93, "AGCR", 4, 302 UNIPHIER_PINCTRL_PIN(93, "AGCR", 4,
305 -1, UNIPHIER_PIN_DRV_FIXED_4, 303 -1, UNIPHIER_PIN_DRV_FIXED4,
306 133, UNIPHIER_PIN_PULL_DOWN), 304 133, UNIPHIER_PIN_PULL_DOWN),
307 UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5, 305 UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5,
308 -1, UNIPHIER_PIN_DRV_FIXED_4, 306 -1, UNIPHIER_PIN_DRV_FIXED4,
309 134, UNIPHIER_PIN_PULL_DOWN), 307 134, UNIPHIER_PIN_PULL_DOWN),
310 UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0, 308 UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0,
311 88, UNIPHIER_PIN_DRV_4_8, 309 88, UNIPHIER_PIN_DRV_1BIT,
312 88, UNIPHIER_PIN_PULL_DOWN), 310 88, UNIPHIER_PIN_PULL_DOWN),
313 UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0, 311 UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0,
314 89, UNIPHIER_PIN_DRV_4_8, 312 89, UNIPHIER_PIN_DRV_1BIT,
315 89, UNIPHIER_PIN_PULL_DOWN), 313 89, UNIPHIER_PIN_PULL_DOWN),
316 UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE, 314 UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE,
317 90, UNIPHIER_PIN_DRV_4_8, 315 90, UNIPHIER_PIN_DRV_1BIT,
318 90, UNIPHIER_PIN_PULL_DOWN), 316 90, UNIPHIER_PIN_PULL_DOWN),
319 UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE, 317 UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE,
320 91, UNIPHIER_PIN_DRV_4_8, 318 91, UNIPHIER_PIN_DRV_1BIT,
321 91, UNIPHIER_PIN_PULL_DOWN), 319 91, UNIPHIER_PIN_PULL_DOWN),
322 UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE, 320 UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE,
323 92, UNIPHIER_PIN_DRV_4_8, 321 92, UNIPHIER_PIN_DRV_1BIT,
324 92, UNIPHIER_PIN_PULL_DOWN), 322 92, UNIPHIER_PIN_PULL_DOWN),
325 UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE, 323 UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE,
326 93, UNIPHIER_PIN_DRV_4_8, 324 93, UNIPHIER_PIN_DRV_1BIT,
327 93, UNIPHIER_PIN_PULL_UP), 325 93, UNIPHIER_PIN_PULL_UP),
328 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0, 326 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0,
329 94, UNIPHIER_PIN_DRV_4_8, 327 94, UNIPHIER_PIN_DRV_1BIT,
330 94, UNIPHIER_PIN_PULL_DOWN), 328 94, UNIPHIER_PIN_PULL_DOWN),
331 UNIPHIER_PINCTRL_PIN(102, "SDA0", 10, 329 UNIPHIER_PINCTRL_PIN(102, "SDA0", 10,
332 -1, UNIPHIER_PIN_DRV_FIXED_4, 330 -1, UNIPHIER_PIN_DRV_FIXED4,
333 -1, UNIPHIER_PIN_PULL_NONE), 331 -1, UNIPHIER_PIN_PULL_NONE),
334 UNIPHIER_PINCTRL_PIN(103, "SCL0", 10, 332 UNIPHIER_PINCTRL_PIN(103, "SCL0", 10,
335 -1, UNIPHIER_PIN_DRV_FIXED_4, 333 -1, UNIPHIER_PIN_DRV_FIXED4,
336 -1, UNIPHIER_PIN_PULL_NONE), 334 -1, UNIPHIER_PIN_PULL_NONE),
337 UNIPHIER_PINCTRL_PIN(104, "SDA1", 11, 335 UNIPHIER_PINCTRL_PIN(104, "SDA1", 11,
338 -1, UNIPHIER_PIN_DRV_FIXED_4, 336 -1, UNIPHIER_PIN_DRV_FIXED4,
339 -1, UNIPHIER_PIN_PULL_NONE), 337 -1, UNIPHIER_PIN_PULL_NONE),
340 UNIPHIER_PINCTRL_PIN(105, "SCL1", 11, 338 UNIPHIER_PINCTRL_PIN(105, "SCL1", 11,
341 -1, UNIPHIER_PIN_DRV_FIXED_4, 339 -1, UNIPHIER_PIN_DRV_FIXED4,
342 -1, UNIPHIER_PIN_PULL_NONE), 340 -1, UNIPHIER_PIN_PULL_NONE),
343 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12, 341 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12,
344 -1, UNIPHIER_PIN_DRV_FIXED_4, 342 -1, UNIPHIER_PIN_DRV_FIXED4,
345 -1, UNIPHIER_PIN_PULL_NONE), 343 -1, UNIPHIER_PIN_PULL_NONE),
346 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12, 344 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12,
347 -1, UNIPHIER_PIN_DRV_FIXED_4, 345 -1, UNIPHIER_PIN_DRV_FIXED4,
348 -1, UNIPHIER_PIN_PULL_NONE), 346 -1, UNIPHIER_PIN_PULL_NONE),
349 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13, 347 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13,
350 -1, UNIPHIER_PIN_DRV_FIXED_4, 348 -1, UNIPHIER_PIN_DRV_FIXED4,
351 -1, UNIPHIER_PIN_PULL_NONE), 349 -1, UNIPHIER_PIN_PULL_NONE),
352 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13, 350 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13,
353 -1, UNIPHIER_PIN_DRV_FIXED_4, 351 -1, UNIPHIER_PIN_DRV_FIXED4,
354 -1, UNIPHIER_PIN_PULL_NONE), 352 -1, UNIPHIER_PIN_PULL_NONE),
355 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE, 353 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE,
356 95, UNIPHIER_PIN_DRV_4_8, 354 95, UNIPHIER_PIN_DRV_1BIT,
357 95, UNIPHIER_PIN_PULL_UP), 355 95, UNIPHIER_PIN_PULL_UP),
358 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE, 356 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE,
359 96, UNIPHIER_PIN_DRV_4_8, 357 96, UNIPHIER_PIN_DRV_1BIT,
360 96, UNIPHIER_PIN_PULL_UP), 358 96, UNIPHIER_PIN_PULL_UP),
361 UNIPHIER_PINCTRL_PIN(112, "SBO1", 0, 359 UNIPHIER_PINCTRL_PIN(112, "SBO1", 0,
362 97, UNIPHIER_PIN_DRV_4_8, 360 97, UNIPHIER_PIN_DRV_1BIT,
363 97, UNIPHIER_PIN_PULL_UP), 361 97, UNIPHIER_PIN_PULL_UP),
364 UNIPHIER_PINCTRL_PIN(113, "SBI1", 0, 362 UNIPHIER_PINCTRL_PIN(113, "SBI1", 0,
365 98, UNIPHIER_PIN_DRV_4_8, 363 98, UNIPHIER_PIN_DRV_1BIT,
366 98, UNIPHIER_PIN_PULL_UP), 364 98, UNIPHIER_PIN_PULL_UP),
367 UNIPHIER_PINCTRL_PIN(114, "TXD1", 0, 365 UNIPHIER_PINCTRL_PIN(114, "TXD1", 0,
368 99, UNIPHIER_PIN_DRV_4_8, 366 99, UNIPHIER_PIN_DRV_1BIT,
369 99, UNIPHIER_PIN_PULL_UP), 367 99, UNIPHIER_PIN_PULL_UP),
370 UNIPHIER_PINCTRL_PIN(115, "RXD1", 0, 368 UNIPHIER_PINCTRL_PIN(115, "RXD1", 0,
371 100, UNIPHIER_PIN_DRV_4_8, 369 100, UNIPHIER_PIN_DRV_1BIT,
372 100, UNIPHIER_PIN_PULL_UP), 370 100, UNIPHIER_PIN_PULL_UP),
373 UNIPHIER_PINCTRL_PIN(116, "HIN", 1, 371 UNIPHIER_PINCTRL_PIN(116, "HIN", 1,
374 -1, UNIPHIER_PIN_DRV_FIXED_5, 372 -1, UNIPHIER_PIN_DRV_FIXED5,
375 -1, UNIPHIER_PIN_PULL_NONE), 373 -1, UNIPHIER_PIN_PULL_NONE),
376 UNIPHIER_PINCTRL_PIN(117, "VIN", 2, 374 UNIPHIER_PINCTRL_PIN(117, "VIN", 2,
377 -1, UNIPHIER_PIN_DRV_FIXED_5, 375 -1, UNIPHIER_PIN_DRV_FIXED5,
378 -1, UNIPHIER_PIN_PULL_NONE), 376 -1, UNIPHIER_PIN_PULL_NONE),
379 UNIPHIER_PINCTRL_PIN(118, "TCON0", 0, 377 UNIPHIER_PINCTRL_PIN(118, "TCON0", 0,
380 101, UNIPHIER_PIN_DRV_4_8, 378 101, UNIPHIER_PIN_DRV_1BIT,
381 101, UNIPHIER_PIN_PULL_DOWN), 379 101, UNIPHIER_PIN_PULL_DOWN),
382 UNIPHIER_PINCTRL_PIN(119, "TCON1", 0, 380 UNIPHIER_PINCTRL_PIN(119, "TCON1", 0,
383 102, UNIPHIER_PIN_DRV_4_8, 381 102, UNIPHIER_PIN_DRV_1BIT,
384 102, UNIPHIER_PIN_PULL_DOWN), 382 102, UNIPHIER_PIN_PULL_DOWN),
385 UNIPHIER_PINCTRL_PIN(120, "TCON2", 0, 383 UNIPHIER_PINCTRL_PIN(120, "TCON2", 0,
386 103, UNIPHIER_PIN_DRV_4_8, 384 103, UNIPHIER_PIN_DRV_1BIT,
387 103, UNIPHIER_PIN_PULL_DOWN), 385 103, UNIPHIER_PIN_PULL_DOWN),
388 UNIPHIER_PINCTRL_PIN(121, "TCON3", 0, 386 UNIPHIER_PINCTRL_PIN(121, "TCON3", 0,
389 104, UNIPHIER_PIN_DRV_4_8, 387 104, UNIPHIER_PIN_DRV_1BIT,
390 104, UNIPHIER_PIN_PULL_DOWN), 388 104, UNIPHIER_PIN_PULL_DOWN),
391 UNIPHIER_PINCTRL_PIN(122, "TCON4", 0, 389 UNIPHIER_PINCTRL_PIN(122, "TCON4", 0,
392 105, UNIPHIER_PIN_DRV_4_8, 390 105, UNIPHIER_PIN_DRV_1BIT,
393 105, UNIPHIER_PIN_PULL_DOWN), 391 105, UNIPHIER_PIN_PULL_DOWN),
394 UNIPHIER_PINCTRL_PIN(123, "TCON5", 0, 392 UNIPHIER_PINCTRL_PIN(123, "TCON5", 0,
395 106, UNIPHIER_PIN_DRV_4_8, 393 106, UNIPHIER_PIN_DRV_1BIT,
396 106, UNIPHIER_PIN_PULL_DOWN), 394 106, UNIPHIER_PIN_PULL_DOWN),
397 UNIPHIER_PINCTRL_PIN(124, "TCON6", 0, 395 UNIPHIER_PINCTRL_PIN(124, "TCON6", 0,
398 107, UNIPHIER_PIN_DRV_4_8, 396 107, UNIPHIER_PIN_DRV_1BIT,
399 107, UNIPHIER_PIN_PULL_DOWN), 397 107, UNIPHIER_PIN_PULL_DOWN),
400 UNIPHIER_PINCTRL_PIN(125, "TCON7", 0, 398 UNIPHIER_PINCTRL_PIN(125, "TCON7", 0,
401 108, UNIPHIER_PIN_DRV_4_8, 399 108, UNIPHIER_PIN_DRV_1BIT,
402 108, UNIPHIER_PIN_PULL_DOWN), 400 108, UNIPHIER_PIN_PULL_DOWN),
403 UNIPHIER_PINCTRL_PIN(126, "TCON8", 0, 401 UNIPHIER_PINCTRL_PIN(126, "TCON8", 0,
404 109, UNIPHIER_PIN_DRV_4_8, 402 109, UNIPHIER_PIN_DRV_1BIT,
405 109, UNIPHIER_PIN_PULL_DOWN), 403 109, UNIPHIER_PIN_PULL_DOWN),
406 UNIPHIER_PINCTRL_PIN(127, "PWMA", 0, 404 UNIPHIER_PINCTRL_PIN(127, "PWMA", 0,
407 110, UNIPHIER_PIN_DRV_4_8, 405 110, UNIPHIER_PIN_DRV_1BIT,
408 110, UNIPHIER_PIN_PULL_DOWN), 406 110, UNIPHIER_PIN_PULL_DOWN),
409 UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0, 407 UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0,
410 111, UNIPHIER_PIN_DRV_4_8, 408 111, UNIPHIER_PIN_DRV_1BIT,
411 111, UNIPHIER_PIN_PULL_DOWN), 409 111, UNIPHIER_PIN_PULL_DOWN),
412 UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0, 410 UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0,
413 112, UNIPHIER_PIN_DRV_4_8, 411 112, UNIPHIER_PIN_DRV_1BIT,
414 112, UNIPHIER_PIN_PULL_DOWN), 412 112, UNIPHIER_PIN_PULL_DOWN),
415 UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0, 413 UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0,
416 113, UNIPHIER_PIN_DRV_4_8, 414 113, UNIPHIER_PIN_DRV_1BIT,
417 113, UNIPHIER_PIN_PULL_DOWN), 415 113, UNIPHIER_PIN_PULL_DOWN),
418 UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0, 416 UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0,
419 114, UNIPHIER_PIN_DRV_4_8, 417 114, UNIPHIER_PIN_DRV_1BIT,
420 114, UNIPHIER_PIN_PULL_DOWN), 418 114, UNIPHIER_PIN_PULL_DOWN),
421 UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0, 419 UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0,
422 115, UNIPHIER_PIN_DRV_4_8, 420 115, UNIPHIER_PIN_DRV_1BIT,
423 115, UNIPHIER_PIN_PULL_DOWN), 421 115, UNIPHIER_PIN_PULL_DOWN),
424 UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0, 422 UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0,
425 116, UNIPHIER_PIN_DRV_4_8, 423 116, UNIPHIER_PIN_DRV_1BIT,
426 116, UNIPHIER_PIN_PULL_DOWN), 424 116, UNIPHIER_PIN_PULL_DOWN),
427 UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0, 425 UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0,
428 117, UNIPHIER_PIN_DRV_4_8, 426 117, UNIPHIER_PIN_DRV_1BIT,
429 117, UNIPHIER_PIN_PULL_DOWN), 427 117, UNIPHIER_PIN_PULL_DOWN),
430 UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0, 428 UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0,
431 118, UNIPHIER_PIN_DRV_4_8, 429 118, UNIPHIER_PIN_DRV_1BIT,
432 118, UNIPHIER_PIN_PULL_DOWN), 430 118, UNIPHIER_PIN_PULL_DOWN),
431 /* dedicated pins */
432 UNIPHIER_PINCTRL_PIN(136, "ED0", -1,
433 0, UNIPHIER_PIN_DRV_1BIT,
434 0, UNIPHIER_PIN_PULL_DOWN),
435 UNIPHIER_PINCTRL_PIN(137, "ED1", -1,
436 1, UNIPHIER_PIN_DRV_1BIT,
437 1, UNIPHIER_PIN_PULL_DOWN),
438 UNIPHIER_PINCTRL_PIN(138, "ED2", -1,
439 2, UNIPHIER_PIN_DRV_1BIT,
440 2, UNIPHIER_PIN_PULL_DOWN),
441 UNIPHIER_PINCTRL_PIN(139, "ED3", -1,
442 3, UNIPHIER_PIN_DRV_1BIT,
443 3, UNIPHIER_PIN_PULL_DOWN),
444 UNIPHIER_PINCTRL_PIN(140, "ED4", -1,
445 4, UNIPHIER_PIN_DRV_1BIT,
446 4, UNIPHIER_PIN_PULL_DOWN),
447 UNIPHIER_PINCTRL_PIN(141, "ED5", -1,
448 5, UNIPHIER_PIN_DRV_1BIT,
449 5, UNIPHIER_PIN_PULL_DOWN),
450 UNIPHIER_PINCTRL_PIN(142, "ED6", -1,
451 6, UNIPHIER_PIN_DRV_1BIT,
452 6, UNIPHIER_PIN_PULL_DOWN),
453 UNIPHIER_PINCTRL_PIN(143, "ED7", -1,
454 7, UNIPHIER_PIN_DRV_1BIT,
455 7, UNIPHIER_PIN_PULL_DOWN),
456 UNIPHIER_PINCTRL_PIN(144, "XERWE0", -1,
457 8, UNIPHIER_PIN_DRV_1BIT,
458 8, UNIPHIER_PIN_PULL_UP),
459 UNIPHIER_PINCTRL_PIN(145, "XERWE1", -1,
460 9, UNIPHIER_PIN_DRV_1BIT,
461 9, UNIPHIER_PIN_PULL_UP),
462 UNIPHIER_PINCTRL_PIN(146, "ERXW", -1,
463 10, UNIPHIER_PIN_DRV_1BIT,
464 10, UNIPHIER_PIN_PULL_UP),
465 UNIPHIER_PINCTRL_PIN(147, "ES0", -1,
466 11, UNIPHIER_PIN_DRV_1BIT,
467 11, UNIPHIER_PIN_PULL_UP),
468 UNIPHIER_PINCTRL_PIN(148, "ES1", -1,
469 12, UNIPHIER_PIN_DRV_1BIT,
470 12, UNIPHIER_PIN_PULL_UP),
471 UNIPHIER_PINCTRL_PIN(149, "ES2", -1,
472 13, UNIPHIER_PIN_DRV_1BIT,
473 13, UNIPHIER_PIN_PULL_UP),
474 UNIPHIER_PINCTRL_PIN(150, "XECS1", -1,
475 14, UNIPHIER_PIN_DRV_1BIT,
476 14, UNIPHIER_PIN_PULL_DOWN),
433}; 477};
434 478
435static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; 479static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27};
436static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 480static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1};
437static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; 481static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31};
438static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 482static const int emmc_dat8_muxvals[] = {1, 1, 1, 1};
483static const unsigned ether_mii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 14,
484 61, 63, 64, 65, 66, 67, 68};
485static const int ether_mii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
486 13, 13, 27, 27, 27, 27, 27, 27, 27};
487static const unsigned ether_rmii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13,
488 14};
489static const int ether_rmii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13,
490 13, 13, 13};
439static const unsigned i2c0_pins[] = {102, 103}; 491static const unsigned i2c0_pins[] = {102, 103};
440static const unsigned i2c0_muxvals[] = {0, 0}; 492static const int i2c0_muxvals[] = {0, 0};
441static const unsigned i2c1_pins[] = {104, 105}; 493static const unsigned i2c1_pins[] = {104, 105};
442static const unsigned i2c1_muxvals[] = {0, 0}; 494static const int i2c1_muxvals[] = {0, 0};
443static const unsigned i2c2_pins[] = {108, 109}; 495static const unsigned i2c2_pins[] = {108, 109};
444static const unsigned i2c2_muxvals[] = {2, 2}; 496static const int i2c2_muxvals[] = {2, 2};
445static const unsigned i2c3_pins[] = {108, 109}; 497static const unsigned i2c3_pins[] = {108, 109};
446static const unsigned i2c3_muxvals[] = {3, 3}; 498static const int i2c3_muxvals[] = {3, 3};
447static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26, 499static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26,
448 27, 28, 29, 30, 31}; 500 27, 28, 29, 30, 31};
449static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 501static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
450 0, 0};
451static const unsigned nand_cs1_pins[] = {22, 23}; 502static const unsigned nand_cs1_pins[] = {22, 23};
452static const unsigned nand_cs1_muxvals[] = {0, 0}; 503static const int nand_cs1_muxvals[] = {0, 0};
453static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40}; 504static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40};
454static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 505static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
506static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142,
507 143, 144, 145, 146, 147, 148, 149};
508static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1,
509 -1, -1, -1, -1, -1};
510static const unsigned system_bus_cs1_pins[] = {150};
511static const int system_bus_cs1_muxvals[] = {-1};
512static const unsigned system_bus_cs2_pins[] = {10};
513static const int system_bus_cs2_muxvals[] = {1};
514static const unsigned system_bus_cs3_pins[] = {11};
515static const int system_bus_cs3_muxvals[] = {1};
516static const unsigned system_bus_cs4_pins[] = {12};
517static const int system_bus_cs4_muxvals[] = {1};
518static const unsigned system_bus_cs5_pins[] = {13};
519static const int system_bus_cs5_muxvals[] = {1};
455static const unsigned uart0_pins[] = {70, 71}; 520static const unsigned uart0_pins[] = {70, 71};
456static const unsigned uart0_muxvals[] = {3, 3}; 521static const int uart0_muxvals[] = {3, 3};
457static const unsigned uart1_pins[] = {114, 115}; 522static const unsigned uart1_pins[] = {114, 115};
458static const unsigned uart1_muxvals[] = {0, 0}; 523static const int uart1_muxvals[] = {0, 0};
459static const unsigned uart2_pins[] = {112, 113}; 524static const unsigned uart2_pins[] = {112, 113};
460static const unsigned uart2_muxvals[] = {1, 1}; 525static const int uart2_muxvals[] = {1, 1};
461static const unsigned uart3_pins[] = {110, 111}; 526static const unsigned uart3_pins[] = {110, 111};
462static const unsigned uart3_muxvals[] = {1, 1}; 527static const int uart3_muxvals[] = {1, 1};
463static const unsigned usb0_pins[] = {41, 42}; 528static const unsigned usb0_pins[] = {41, 42};
464static const unsigned usb0_muxvals[] = {0, 0}; 529static const int usb0_muxvals[] = {0, 0};
465static const unsigned usb1_pins[] = {43, 44}; 530static const unsigned usb1_pins[] = {43, 44};
466static const unsigned usb1_muxvals[] = {0, 0}; 531static const int usb1_muxvals[] = {0, 0};
467static const unsigned usb2_pins[] = {114, 115}; 532static const unsigned usb2_pins[] = {114, 115};
468static const unsigned usb2_muxvals[] = {1, 1}; 533static const int usb2_muxvals[] = {1, 1};
469static const unsigned port_range0_pins[] = { 534static const unsigned port_range0_pins[] = {
470 0, 1, 2, 3, 4, 5, 6, 7, /* PORT0x */ 535 0, 1, 2, 3, 4, 5, 6, 7, /* PORT0x */
471 8, 9, 10, 11, 12, 13, 14, 15, /* PORT1x */ 536 8, 9, 10, 11, 12, 13, 14, 15, /* PORT1x */
@@ -481,7 +546,7 @@ static const unsigned port_range0_pins[] = {
481 48, 49, 46, 45, 123, 124, 125, 126, /* PORT11x */ 546 48, 49, 46, 45, 123, 124, 125, 126, /* PORT11x */
482 47, 127, 20, 56, 22, /* PORT120-124 */ 547 47, 127, 20, 56, 22, /* PORT120-124 */
483}; 548};
484static const unsigned port_range0_muxvals[] = { 549static const int port_range0_muxvals[] = {
485 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 550 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */
486 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 551 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */
487 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ 552 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */
@@ -499,39 +564,41 @@ static const unsigned port_range0_muxvals[] = {
499static const unsigned port_range1_pins[] = { 564static const unsigned port_range1_pins[] = {
500 116, 117, /* PORT130-131 */ 565 116, 117, /* PORT130-131 */
501}; 566};
502static const unsigned port_range1_muxvals[] = { 567static const int port_range1_muxvals[] = {
503 15, 15, /* PORT130-131 */ 568 15, 15, /* PORT130-131 */
504}; 569};
505static const unsigned port_range2_pins[] = { 570static const unsigned port_range2_pins[] = {
506 102, 103, 104, 105, 106, 107, 108, 109, /* PORT14x */ 571 102, 103, 104, 105, 106, 107, 108, 109, /* PORT14x */
507}; 572};
508static const unsigned port_range2_muxvals[] = { 573static const int port_range2_muxvals[] = {
509 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */ 574 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */
510}; 575};
511static const unsigned port_range3_pins[] = { 576static const unsigned port_range3_pins[] = {
512 23, /* PORT166 */ 577 23, /* PORT166 */
513}; 578};
514static const unsigned port_range3_muxvals[] = { 579static const int port_range3_muxvals[] = {
515 15, /* PORT166 */ 580 15, /* PORT166 */
516}; 581};
517static const unsigned xirq_range0_pins[] = { 582static const unsigned xirq_range0_pins[] = {
518 128, 129, 130, 131, 132, 133, 134, 135, /* XIRQ0-7 */ 583 128, 129, 130, 131, 132, 133, 134, 135, /* XIRQ0-7 */
519 82, 87, 88, 50, 51, /* XIRQ8-12 */ 584 82, 87, 88, 50, 51, /* XIRQ8-12 */
520}; 585};
521static const unsigned xirq_range0_muxvals[] = { 586static const int xirq_range0_muxvals[] = {
522 0, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */ 587 0, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */
523 14, 14, 14, 14, 14, /* XIRQ8-12 */ 588 14, 14, 14, 14, 14, /* XIRQ8-12 */
524}; 589};
525static const unsigned xirq_range1_pins[] = { 590static const unsigned xirq_range1_pins[] = {
526 52, 58, /* XIRQ14-15 */ 591 52, 58, /* XIRQ14-15 */
527}; 592};
528static const unsigned xirq_range1_muxvals[] = { 593static const int xirq_range1_muxvals[] = {
529 14, 14, /* XIRQ14-15 */ 594 14, 14, /* XIRQ14-15 */
530}; 595};
531 596
532static const struct uniphier_pinctrl_group ph1_sld8_groups[] = { 597static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = {
533 UNIPHIER_PINCTRL_GROUP(emmc), 598 UNIPHIER_PINCTRL_GROUP(emmc),
534 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 599 UNIPHIER_PINCTRL_GROUP(emmc_dat8),
600 UNIPHIER_PINCTRL_GROUP(ether_mii),
601 UNIPHIER_PINCTRL_GROUP(ether_rmii),
535 UNIPHIER_PINCTRL_GROUP(i2c0), 602 UNIPHIER_PINCTRL_GROUP(i2c0),
536 UNIPHIER_PINCTRL_GROUP(i2c1), 603 UNIPHIER_PINCTRL_GROUP(i2c1),
537 UNIPHIER_PINCTRL_GROUP(i2c2), 604 UNIPHIER_PINCTRL_GROUP(i2c2),
@@ -539,6 +606,12 @@ static const struct uniphier_pinctrl_group ph1_sld8_groups[] = {
539 UNIPHIER_PINCTRL_GROUP(nand), 606 UNIPHIER_PINCTRL_GROUP(nand),
540 UNIPHIER_PINCTRL_GROUP(nand_cs1), 607 UNIPHIER_PINCTRL_GROUP(nand_cs1),
541 UNIPHIER_PINCTRL_GROUP(sd), 608 UNIPHIER_PINCTRL_GROUP(sd),
609 UNIPHIER_PINCTRL_GROUP(system_bus),
610 UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
611 UNIPHIER_PINCTRL_GROUP(system_bus_cs2),
612 UNIPHIER_PINCTRL_GROUP(system_bus_cs3),
613 UNIPHIER_PINCTRL_GROUP(system_bus_cs4),
614 UNIPHIER_PINCTRL_GROUP(system_bus_cs5),
542 UNIPHIER_PINCTRL_GROUP(uart0), 615 UNIPHIER_PINCTRL_GROUP(uart0),
543 UNIPHIER_PINCTRL_GROUP(uart1), 616 UNIPHIER_PINCTRL_GROUP(uart1),
544 UNIPHIER_PINCTRL_GROUP(uart2), 617 UNIPHIER_PINCTRL_GROUP(uart2),
@@ -682,12 +755,20 @@ static const struct uniphier_pinctrl_group ph1_sld8_groups[] = {
682}; 755};
683 756
684static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 757static const char * const emmc_groups[] = {"emmc", "emmc_dat8"};
758static const char * const ether_mii_groups[] = {"ether_mii"};
759static const char * const ether_rmii_groups[] = {"ether_rmii"};
685static const char * const i2c0_groups[] = {"i2c0"}; 760static const char * const i2c0_groups[] = {"i2c0"};
686static const char * const i2c1_groups[] = {"i2c1"}; 761static const char * const i2c1_groups[] = {"i2c1"};
687static const char * const i2c2_groups[] = {"i2c2"}; 762static const char * const i2c2_groups[] = {"i2c2"};
688static const char * const i2c3_groups[] = {"i2c3"}; 763static const char * const i2c3_groups[] = {"i2c3"};
689static const char * const nand_groups[] = {"nand", "nand_cs1"}; 764static const char * const nand_groups[] = {"nand", "nand_cs1"};
690static const char * const sd_groups[] = {"sd"}; 765static const char * const sd_groups[] = {"sd"};
766static const char * const system_bus_groups[] = {"system_bus",
767 "system_bus_cs1",
768 "system_bus_cs2",
769 "system_bus_cs3",
770 "system_bus_cs4",
771 "system_bus_cs5"};
691static const char * const uart0_groups[] = {"uart0"}; 772static const char * const uart0_groups[] = {"uart0"};
692static const char * const uart1_groups[] = {"uart1"}; 773static const char * const uart1_groups[] = {"uart1"};
693static const char * const uart2_groups[] = {"uart2"}; 774static const char * const uart2_groups[] = {"uart2"};
@@ -736,14 +817,17 @@ static const char * const xirq_groups[] = {
736 "xirq12", /* none*/ "xirq14", "xirq15", 817 "xirq12", /* none*/ "xirq14", "xirq15",
737}; 818};
738 819
739static const struct uniphier_pinmux_function ph1_sld8_functions[] = { 820static const struct uniphier_pinmux_function uniphier_sld8_functions[] = {
740 UNIPHIER_PINMUX_FUNCTION(emmc), 821 UNIPHIER_PINMUX_FUNCTION(emmc),
822 UNIPHIER_PINMUX_FUNCTION(ether_mii),
823 UNIPHIER_PINMUX_FUNCTION(ether_rmii),
741 UNIPHIER_PINMUX_FUNCTION(i2c0), 824 UNIPHIER_PINMUX_FUNCTION(i2c0),
742 UNIPHIER_PINMUX_FUNCTION(i2c1), 825 UNIPHIER_PINMUX_FUNCTION(i2c1),
743 UNIPHIER_PINMUX_FUNCTION(i2c2), 826 UNIPHIER_PINMUX_FUNCTION(i2c2),
744 UNIPHIER_PINMUX_FUNCTION(i2c3), 827 UNIPHIER_PINMUX_FUNCTION(i2c3),
745 UNIPHIER_PINMUX_FUNCTION(nand), 828 UNIPHIER_PINMUX_FUNCTION(nand),
746 UNIPHIER_PINMUX_FUNCTION(sd), 829 UNIPHIER_PINMUX_FUNCTION(sd),
830 UNIPHIER_PINMUX_FUNCTION(system_bus),
747 UNIPHIER_PINMUX_FUNCTION(uart0), 831 UNIPHIER_PINMUX_FUNCTION(uart0),
748 UNIPHIER_PINMUX_FUNCTION(uart1), 832 UNIPHIER_PINMUX_FUNCTION(uart1),
749 UNIPHIER_PINMUX_FUNCTION(uart2), 833 UNIPHIER_PINMUX_FUNCTION(uart2),
@@ -755,43 +839,36 @@ static const struct uniphier_pinmux_function ph1_sld8_functions[] = {
755 UNIPHIER_PINMUX_FUNCTION(xirq), 839 UNIPHIER_PINMUX_FUNCTION(xirq),
756}; 840};
757 841
758static struct uniphier_pinctrl_socdata ph1_sld8_pindata = { 842static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = {
759 .groups = ph1_sld8_groups, 843 .pins = uniphier_sld8_pins,
760 .groups_count = ARRAY_SIZE(ph1_sld8_groups), 844 .npins = ARRAY_SIZE(uniphier_sld8_pins),
761 .functions = ph1_sld8_functions, 845 .groups = uniphier_sld8_groups,
762 .functions_count = ARRAY_SIZE(ph1_sld8_functions), 846 .groups_count = ARRAY_SIZE(uniphier_sld8_groups),
763 .mux_bits = 8, 847 .functions = uniphier_sld8_functions,
764 .reg_stride = 4, 848 .functions_count = ARRAY_SIZE(uniphier_sld8_functions),
765 .load_pinctrl = false, 849 .caps = 0,
766};
767
768static struct pinctrl_desc ph1_sld8_pinctrl_desc = {
769 .name = DRIVER_NAME,
770 .pins = ph1_sld8_pins,
771 .npins = ARRAY_SIZE(ph1_sld8_pins),
772 .owner = THIS_MODULE,
773}; 850};
774 851
775static int ph1_sld8_pinctrl_probe(struct platform_device *pdev) 852static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev)
776{ 853{
777 return uniphier_pinctrl_probe(pdev, &ph1_sld8_pinctrl_desc, 854 return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata);
778 &ph1_sld8_pindata);
779} 855}
780 856
781static const struct of_device_id ph1_sld8_pinctrl_match[] = { 857static const struct of_device_id uniphier_sld8_pinctrl_match[] = {
858 { .compatible = "socionext,uniphier-sld8-pinctrl" },
782 { .compatible = "socionext,ph1-sld8-pinctrl" }, 859 { .compatible = "socionext,ph1-sld8-pinctrl" },
783 { /* sentinel */ } 860 { /* sentinel */ }
784}; 861};
785MODULE_DEVICE_TABLE(of, ph1_sld8_pinctrl_match); 862MODULE_DEVICE_TABLE(of, uniphier_sld8_pinctrl_match);
786 863
787static struct platform_driver ph1_sld8_pinctrl_driver = { 864static struct platform_driver uniphier_sld8_pinctrl_driver = {
788 .probe = ph1_sld8_pinctrl_probe, 865 .probe = uniphier_sld8_pinctrl_probe,
789 .driver = { 866 .driver = {
790 .name = DRIVER_NAME, 867 .name = "uniphier-sld8-pinctrl",
791 .of_match_table = ph1_sld8_pinctrl_match, 868 .of_match_table = uniphier_sld8_pinctrl_match,
792 }, 869 },
793}; 870};
794module_platform_driver(ph1_sld8_pinctrl_driver); 871module_platform_driver(uniphier_sld8_pinctrl_driver);
795 872
796MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 873MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>");
797MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver"); 874MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier.h b/drivers/pinctrl/uniphier/pinctrl-uniphier.h
index a21154f4b453..923f36cb245d 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier.h
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier.h
@@ -15,14 +15,18 @@
15#ifndef __PINCTRL_UNIPHIER_H__ 15#ifndef __PINCTRL_UNIPHIER_H__
16#define __PINCTRL_UNIPHIER_H__ 16#define __PINCTRL_UNIPHIER_H__
17 17
18#include <linux/bitops.h>
18#include <linux/bug.h> 19#include <linux/bug.h>
19#include <linux/kernel.h> 20#include <linux/kernel.h>
20#include <linux/types.h> 21#include <linux/types.h>
21 22
23struct platform_device;
24
22#define UNIPHIER_PINCTRL_PINMUX_BASE 0x0 25#define UNIPHIER_PINCTRL_PINMUX_BASE 0x0
23#define UNIPHIER_PINCTRL_LOAD_PINMUX 0x700 26#define UNIPHIER_PINCTRL_LOAD_PINMUX 0x700
24#define UNIPHIER_PINCTRL_DRVCTRL_BASE 0x800 27#define UNIPHIER_PINCTRL_DRVCTRL_BASE 0x800
25#define UNIPHIER_PINCTRL_DRV2CTRL_BASE 0x900 28#define UNIPHIER_PINCTRL_DRV2CTRL_BASE 0x900
29#define UNIPHIER_PINCTRL_DRV3CTRL_BASE 0x980
26#define UNIPHIER_PINCTRL_PUPDCTRL_BASE 0xa00 30#define UNIPHIER_PINCTRL_PUPDCTRL_BASE 0xa00
27#define UNIPHIER_PINCTRL_IECTRL 0xd00 31#define UNIPHIER_PINCTRL_IECTRL 0xd00
28 32
@@ -39,16 +43,16 @@
39#define UNIPHIER_PIN_DRVCTRL_MASK ((1UL << (UNIPHIER_PIN_DRVCTRL_BITS)) \ 43#define UNIPHIER_PIN_DRVCTRL_MASK ((1UL << (UNIPHIER_PIN_DRVCTRL_BITS)) \
40 - 1) 44 - 1)
41 45
42/* supported drive strength (mA) */ 46/* drive control type */
43#define UNIPHIER_PIN_DRV_STR_SHIFT ((UNIPHIER_PIN_DRVCTRL_SHIFT) + \ 47#define UNIPHIER_PIN_DRV_TYPE_SHIFT ((UNIPHIER_PIN_DRVCTRL_SHIFT) + \
44 (UNIPHIER_PIN_DRVCTRL_BITS)) 48 (UNIPHIER_PIN_DRVCTRL_BITS))
45#define UNIPHIER_PIN_DRV_STR_BITS 3 49#define UNIPHIER_PIN_DRV_TYPE_BITS 3
46#define UNIPHIER_PIN_DRV_STR_MASK ((1UL << (UNIPHIER_PIN_DRV_STR_BITS)) \ 50#define UNIPHIER_PIN_DRV_TYPE_MASK ((1UL << (UNIPHIER_PIN_DRV_TYPE_BITS)) \
47 - 1) 51 - 1)
48 52
49/* pull-up / pull-down register number */ 53/* pull-up / pull-down register number */
50#define UNIPHIER_PIN_PUPDCTRL_SHIFT ((UNIPHIER_PIN_DRV_STR_SHIFT) + \ 54#define UNIPHIER_PIN_PUPDCTRL_SHIFT ((UNIPHIER_PIN_DRV_TYPE_SHIFT) + \
51 (UNIPHIER_PIN_DRV_STR_BITS)) 55 (UNIPHIER_PIN_DRV_TYPE_BITS))
52#define UNIPHIER_PIN_PUPDCTRL_BITS 9 56#define UNIPHIER_PIN_PUPDCTRL_BITS 9
53#define UNIPHIER_PIN_PUPDCTRL_MASK ((1UL << (UNIPHIER_PIN_PUPDCTRL_BITS))\ 57#define UNIPHIER_PIN_PUPDCTRL_MASK ((1UL << (UNIPHIER_PIN_PUPDCTRL_BITS))\
54 - 1) 58 - 1)
@@ -66,13 +70,14 @@
66 70
67#define UNIPHIER_PIN_IECTRL_NONE (UNIPHIER_PIN_IECTRL_MASK) 71#define UNIPHIER_PIN_IECTRL_NONE (UNIPHIER_PIN_IECTRL_MASK)
68 72
69/* selectable drive strength */ 73/* drive control type */
70enum uniphier_pin_drv_str { 74enum uniphier_pin_drv_type {
71 UNIPHIER_PIN_DRV_4_8, /* 2 level control: 4/8 mA */ 75 UNIPHIER_PIN_DRV_1BIT, /* 2 level control: 4/8 mA */
72 UNIPHIER_PIN_DRV_8_12_16_20, /* 4 level control: 8/12/16/20 mA */ 76 UNIPHIER_PIN_DRV_2BIT, /* 4 level control: 8/12/16/20 mA */
73 UNIPHIER_PIN_DRV_FIXED_4, /* fixed to 4mA */ 77 UNIPHIER_PIN_DRV_3BIT, /* 8 level control: 4/5/7/9/11/12/14/16 mA */
74 UNIPHIER_PIN_DRV_FIXED_5, /* fixed to 5mA */ 78 UNIPHIER_PIN_DRV_FIXED4, /* fixed to 4mA */
75 UNIPHIER_PIN_DRV_FIXED_8, /* fixed to 8mA */ 79 UNIPHIER_PIN_DRV_FIXED5, /* fixed to 5mA */
80 UNIPHIER_PIN_DRV_FIXED8, /* fixed to 8mA */
76 UNIPHIER_PIN_DRV_NONE, /* no support (input only pin) */ 81 UNIPHIER_PIN_DRV_NONE, /* no support (input only pin) */
77}; 82};
78 83
@@ -89,17 +94,17 @@ enum uniphier_pin_pull_dir {
89 (((x) & (UNIPHIER_PIN_IECTRL_MASK)) << (UNIPHIER_PIN_IECTRL_SHIFT)) 94 (((x) & (UNIPHIER_PIN_IECTRL_MASK)) << (UNIPHIER_PIN_IECTRL_SHIFT))
90#define UNIPHIER_PIN_DRVCTRL(x) \ 95#define UNIPHIER_PIN_DRVCTRL(x) \
91 (((x) & (UNIPHIER_PIN_DRVCTRL_MASK)) << (UNIPHIER_PIN_DRVCTRL_SHIFT)) 96 (((x) & (UNIPHIER_PIN_DRVCTRL_MASK)) << (UNIPHIER_PIN_DRVCTRL_SHIFT))
92#define UNIPHIER_PIN_DRV_STR(x) \ 97#define UNIPHIER_PIN_DRV_TYPE(x) \
93 (((x) & (UNIPHIER_PIN_DRV_STR_MASK)) << (UNIPHIER_PIN_DRV_STR_SHIFT)) 98 (((x) & (UNIPHIER_PIN_DRV_TYPE_MASK)) << (UNIPHIER_PIN_DRV_TYPE_SHIFT))
94#define UNIPHIER_PIN_PUPDCTRL(x) \ 99#define UNIPHIER_PIN_PUPDCTRL(x) \
95 (((x) & (UNIPHIER_PIN_PUPDCTRL_MASK)) << (UNIPHIER_PIN_PUPDCTRL_SHIFT)) 100 (((x) & (UNIPHIER_PIN_PUPDCTRL_MASK)) << (UNIPHIER_PIN_PUPDCTRL_SHIFT))
96#define UNIPHIER_PIN_PULL_DIR(x) \ 101#define UNIPHIER_PIN_PULL_DIR(x) \
97 (((x) & (UNIPHIER_PIN_PULL_DIR_MASK)) << (UNIPHIER_PIN_PULL_DIR_SHIFT)) 102 (((x) & (UNIPHIER_PIN_PULL_DIR_MASK)) << (UNIPHIER_PIN_PULL_DIR_SHIFT))
98 103
99#define UNIPHIER_PIN_ATTR_PACKED(iectrl, drvctrl, drv_str, pupdctrl, pull_dir)\ 104#define UNIPHIER_PIN_ATTR_PACKED(iectrl, drvctrl, drv_type, pupdctrl, pull_dir)\
100 (UNIPHIER_PIN_IECTRL(iectrl) | \ 105 (UNIPHIER_PIN_IECTRL(iectrl) | \
101 UNIPHIER_PIN_DRVCTRL(drvctrl) | \ 106 UNIPHIER_PIN_DRVCTRL(drvctrl) | \
102 UNIPHIER_PIN_DRV_STR(drv_str) | \ 107 UNIPHIER_PIN_DRV_TYPE(drv_type) | \
103 UNIPHIER_PIN_PUPDCTRL(pupdctrl) | \ 108 UNIPHIER_PIN_PUPDCTRL(pupdctrl) | \
104 UNIPHIER_PIN_PULL_DIR(pull_dir)) 109 UNIPHIER_PIN_PULL_DIR(pull_dir))
105 110
@@ -115,10 +120,10 @@ static inline unsigned int uniphier_pin_get_drvctrl(void *drv_data)
115 UNIPHIER_PIN_DRVCTRL_MASK; 120 UNIPHIER_PIN_DRVCTRL_MASK;
116} 121}
117 122
118static inline unsigned int uniphier_pin_get_drv_str(void *drv_data) 123static inline unsigned int uniphier_pin_get_drv_type(void *drv_data)
119{ 124{
120 return ((unsigned long)drv_data >> UNIPHIER_PIN_DRV_STR_SHIFT) & 125 return ((unsigned long)drv_data >> UNIPHIER_PIN_DRV_TYPE_SHIFT) &
121 UNIPHIER_PIN_DRV_STR_MASK; 126 UNIPHIER_PIN_DRV_TYPE_MASK;
122} 127}
123 128
124static inline unsigned int uniphier_pin_get_pupdctrl(void *drv_data) 129static inline unsigned int uniphier_pin_get_pupdctrl(void *drv_data)
@@ -143,7 +148,7 @@ struct uniphier_pinctrl_group {
143 const char *name; 148 const char *name;
144 const unsigned *pins; 149 const unsigned *pins;
145 unsigned num_pins; 150 unsigned num_pins;
146 const unsigned *muxvals; 151 const int *muxvals;
147 enum uniphier_pinmux_gpio_range_type range_type; 152 enum uniphier_pinmux_gpio_range_type range_type;
148}; 153};
149 154
@@ -154,13 +159,15 @@ struct uniphier_pinmux_function {
154}; 159};
155 160
156struct uniphier_pinctrl_socdata { 161struct uniphier_pinctrl_socdata {
162 const struct pinctrl_pin_desc *pins;
163 unsigned int npins;
157 const struct uniphier_pinctrl_group *groups; 164 const struct uniphier_pinctrl_group *groups;
158 int groups_count; 165 int groups_count;
159 const struct uniphier_pinmux_function *functions; 166 const struct uniphier_pinmux_function *functions;
160 int functions_count; 167 int functions_count;
161 unsigned mux_bits; 168 unsigned int caps;
162 unsigned reg_stride; 169#define UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL BIT(1)
163 bool load_pinctrl; 170#define UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE BIT(0)
164}; 171};
165 172
166#define UNIPHIER_PINCTRL_PIN(a, b, c, d, e, f, g) \ 173#define UNIPHIER_PINCTRL_PIN(a, b, c, d, e, f, g) \
@@ -205,11 +212,7 @@ struct uniphier_pinctrl_socdata {
205 .num_groups = ARRAY_SIZE(func##_groups), \ 212 .num_groups = ARRAY_SIZE(func##_groups), \
206 } 213 }
207 214
208struct platform_device;
209struct pinctrl_desc;
210
211int uniphier_pinctrl_probe(struct platform_device *pdev, 215int uniphier_pinctrl_probe(struct platform_device *pdev,
212 struct pinctrl_desc *desc,
213 struct uniphier_pinctrl_socdata *socdata); 216 struct uniphier_pinctrl_socdata *socdata);
214 217
215#endif /* __PINCTRL_UNIPHIER_H__ */ 218#endif /* __PINCTRL_UNIPHIER_H__ */
diff --git a/include/dt-bindings/pinctrl/stm32f746-pinfunc.h b/include/dt-bindings/pinctrl/stm32f746-pinfunc.h
new file mode 100644
index 000000000000..6348c6a830e9
--- /dev/null
+++ b/include/dt-bindings/pinctrl/stm32f746-pinfunc.h
@@ -0,0 +1,1324 @@
1#ifndef _DT_BINDINGS_STM32F746_PINFUNC_H
2#define _DT_BINDINGS_STM32F746_PINFUNC_H
3
4#define STM32F746_PA0_FUNC_GPIO 0x0
5#define STM32F746_PA0_FUNC_TIM2_CH1_TIM2_ETR 0x2
6#define STM32F746_PA0_FUNC_TIM5_CH1 0x3
7#define STM32F746_PA0_FUNC_TIM8_ETR 0x4
8#define STM32F746_PA0_FUNC_USART2_CTS 0x8
9#define STM32F746_PA0_FUNC_UART4_TX 0x9
10#define STM32F746_PA0_FUNC_SAI2_SD_B 0xb
11#define STM32F746_PA0_FUNC_ETH_MII_CRS 0xc
12#define STM32F746_PA0_FUNC_EVENTOUT 0x10
13#define STM32F746_PA0_FUNC_ANALOG 0x11
14
15#define STM32F746_PA1_FUNC_GPIO 0x100
16#define STM32F746_PA1_FUNC_TIM2_CH2 0x102
17#define STM32F746_PA1_FUNC_TIM5_CH2 0x103
18#define STM32F746_PA1_FUNC_USART2_RTS 0x108
19#define STM32F746_PA1_FUNC_UART4_RX 0x109
20#define STM32F746_PA1_FUNC_QUADSPI_BK1_IO3 0x10a
21#define STM32F746_PA1_FUNC_SAI2_MCLK_B 0x10b
22#define STM32F746_PA1_FUNC_ETH_MII_RX_CLK_ETH_RMII_REF_CLK 0x10c
23#define STM32F746_PA1_FUNC_LCD_R2 0x10f
24#define STM32F746_PA1_FUNC_EVENTOUT 0x110
25#define STM32F746_PA1_FUNC_ANALOG 0x111
26
27#define STM32F746_PA2_FUNC_GPIO 0x200
28#define STM32F746_PA2_FUNC_TIM2_CH3 0x202
29#define STM32F746_PA2_FUNC_TIM5_CH3 0x203
30#define STM32F746_PA2_FUNC_TIM9_CH1 0x204
31#define STM32F746_PA2_FUNC_USART2_TX 0x208
32#define STM32F746_PA2_FUNC_SAI2_SCK_B 0x209
33#define STM32F746_PA2_FUNC_ETH_MDIO 0x20c
34#define STM32F746_PA2_FUNC_LCD_R1 0x20f
35#define STM32F746_PA2_FUNC_EVENTOUT 0x210
36#define STM32F746_PA2_FUNC_ANALOG 0x211
37
38#define STM32F746_PA3_FUNC_GPIO 0x300
39#define STM32F746_PA3_FUNC_TIM2_CH4 0x302
40#define STM32F746_PA3_FUNC_TIM5_CH4 0x303
41#define STM32F746_PA3_FUNC_TIM9_CH2 0x304
42#define STM32F746_PA3_FUNC_USART2_RX 0x308
43#define STM32F746_PA3_FUNC_OTG_HS_ULPI_D0 0x30b
44#define STM32F746_PA3_FUNC_ETH_MII_COL 0x30c
45#define STM32F746_PA3_FUNC_LCD_B5 0x30f
46#define STM32F746_PA3_FUNC_EVENTOUT 0x310
47#define STM32F746_PA3_FUNC_ANALOG 0x311
48
49#define STM32F746_PA4_FUNC_GPIO 0x400
50#define STM32F746_PA4_FUNC_SPI1_NSS_I2S1_WS 0x406
51#define STM32F746_PA4_FUNC_SPI3_NSS_I2S3_WS 0x407
52#define STM32F746_PA4_FUNC_USART2_CK 0x408
53#define STM32F746_PA4_FUNC_OTG_HS_SOF 0x40d
54#define STM32F746_PA4_FUNC_DCMI_HSYNC 0x40e
55#define STM32F746_PA4_FUNC_LCD_VSYNC 0x40f
56#define STM32F746_PA4_FUNC_EVENTOUT 0x410
57#define STM32F746_PA4_FUNC_ANALOG 0x411
58
59#define STM32F746_PA5_FUNC_GPIO 0x500
60#define STM32F746_PA5_FUNC_TIM2_CH1_TIM2_ETR 0x502
61#define STM32F746_PA5_FUNC_TIM8_CH1N 0x504
62#define STM32F746_PA5_FUNC_SPI1_SCK_I2S1_CK 0x506
63#define STM32F746_PA5_FUNC_OTG_HS_ULPI_CK 0x50b
64#define STM32F746_PA5_FUNC_LCD_R4 0x50f
65#define STM32F746_PA5_FUNC_EVENTOUT 0x510
66#define STM32F746_PA5_FUNC_ANALOG 0x511
67
68#define STM32F746_PA6_FUNC_GPIO 0x600
69#define STM32F746_PA6_FUNC_TIM1_BKIN 0x602
70#define STM32F746_PA6_FUNC_TIM3_CH1 0x603
71#define STM32F746_PA6_FUNC_TIM8_BKIN 0x604
72#define STM32F746_PA6_FUNC_SPI1_MISO 0x606
73#define STM32F746_PA6_FUNC_TIM13_CH1 0x60a
74#define STM32F746_PA6_FUNC_DCMI_PIXCLK 0x60e
75#define STM32F746_PA6_FUNC_LCD_G2 0x60f
76#define STM32F746_PA6_FUNC_EVENTOUT 0x610
77#define STM32F746_PA6_FUNC_ANALOG 0x611
78
79#define STM32F746_PA7_FUNC_GPIO 0x700
80#define STM32F746_PA7_FUNC_TIM1_CH1N 0x702
81#define STM32F746_PA7_FUNC_TIM3_CH2 0x703
82#define STM32F746_PA7_FUNC_TIM8_CH1N 0x704
83#define STM32F746_PA7_FUNC_SPI1_MOSI_I2S1_SD 0x706
84#define STM32F746_PA7_FUNC_TIM14_CH1 0x70a
85#define STM32F746_PA7_FUNC_ETH_MII_RX_DV_ETH_RMII_CRS_DV 0x70c
86#define STM32F746_PA7_FUNC_FMC_SDNWE 0x70d
87#define STM32F746_PA7_FUNC_EVENTOUT 0x710
88#define STM32F746_PA7_FUNC_ANALOG 0x711
89
90#define STM32F746_PA8_FUNC_GPIO 0x800
91#define STM32F746_PA8_FUNC_MCO1 0x801
92#define STM32F746_PA8_FUNC_TIM1_CH1 0x802
93#define STM32F746_PA8_FUNC_TIM8_BKIN2 0x804
94#define STM32F746_PA8_FUNC_I2C3_SCL 0x805
95#define STM32F746_PA8_FUNC_USART1_CK 0x808
96#define STM32F746_PA8_FUNC_OTG_FS_SOF 0x80b
97#define STM32F746_PA8_FUNC_LCD_R6 0x80f
98#define STM32F746_PA8_FUNC_EVENTOUT 0x810
99#define STM32F746_PA8_FUNC_ANALOG 0x811
100
101#define STM32F746_PA9_FUNC_GPIO 0x900
102#define STM32F746_PA9_FUNC_TIM1_CH2 0x902
103#define STM32F746_PA9_FUNC_I2C3_SMBA 0x905
104#define STM32F746_PA9_FUNC_SPI2_SCK_I2S2_CK 0x906
105#define STM32F746_PA9_FUNC_USART1_TX 0x908
106#define STM32F746_PA9_FUNC_DCMI_D0 0x90e
107#define STM32F746_PA9_FUNC_EVENTOUT 0x910
108#define STM32F746_PA9_FUNC_ANALOG 0x911
109
110#define STM32F746_PA10_FUNC_GPIO 0xa00
111#define STM32F746_PA10_FUNC_TIM1_CH3 0xa02
112#define STM32F746_PA10_FUNC_USART1_RX 0xa08
113#define STM32F746_PA10_FUNC_OTG_FS_ID 0xa0b
114#define STM32F746_PA10_FUNC_DCMI_D1 0xa0e
115#define STM32F746_PA10_FUNC_EVENTOUT 0xa10
116#define STM32F746_PA10_FUNC_ANALOG 0xa11
117
118#define STM32F746_PA11_FUNC_GPIO 0xb00
119#define STM32F746_PA11_FUNC_TIM1_CH4 0xb02
120#define STM32F746_PA11_FUNC_USART1_CTS 0xb08
121#define STM32F746_PA11_FUNC_CAN1_RX 0xb0a
122#define STM32F746_PA11_FUNC_OTG_FS_DM 0xb0b
123#define STM32F746_PA11_FUNC_LCD_R4 0xb0f
124#define STM32F746_PA11_FUNC_EVENTOUT 0xb10
125#define STM32F746_PA11_FUNC_ANALOG 0xb11
126
127#define STM32F746_PA12_FUNC_GPIO 0xc00
128#define STM32F746_PA12_FUNC_TIM1_ETR 0xc02
129#define STM32F746_PA12_FUNC_USART1_RTS 0xc08
130#define STM32F746_PA12_FUNC_SAI2_FS_B 0xc09
131#define STM32F746_PA12_FUNC_CAN1_TX 0xc0a
132#define STM32F746_PA12_FUNC_OTG_FS_DP 0xc0b
133#define STM32F746_PA12_FUNC_LCD_R5 0xc0f
134#define STM32F746_PA12_FUNC_EVENTOUT 0xc10
135#define STM32F746_PA12_FUNC_ANALOG 0xc11
136
137#define STM32F746_PA13_FUNC_GPIO 0xd00
138#define STM32F746_PA13_FUNC_JTMS_SWDIO 0xd01
139#define STM32F746_PA13_FUNC_EVENTOUT 0xd10
140#define STM32F746_PA13_FUNC_ANALOG 0xd11
141
142#define STM32F746_PA14_FUNC_GPIO 0xe00
143#define STM32F746_PA14_FUNC_JTCK_SWCLK 0xe01
144#define STM32F746_PA14_FUNC_EVENTOUT 0xe10
145#define STM32F746_PA14_FUNC_ANALOG 0xe11
146
147#define STM32F746_PA15_FUNC_GPIO 0xf00
148#define STM32F746_PA15_FUNC_JTDI 0xf01
149#define STM32F746_PA15_FUNC_TIM2_CH1_TIM2_ETR 0xf02
150#define STM32F746_PA15_FUNC_HDMI_CEC 0xf05
151#define STM32F746_PA15_FUNC_SPI1_NSS_I2S1_WS 0xf06
152#define STM32F746_PA15_FUNC_SPI3_NSS_I2S3_WS 0xf07
153#define STM32F746_PA15_FUNC_UART4_RTS 0xf09
154#define STM32F746_PA15_FUNC_EVENTOUT 0xf10
155#define STM32F746_PA15_FUNC_ANALOG 0xf11
156
157
158#define STM32F746_PB0_FUNC_GPIO 0x1000
159#define STM32F746_PB0_FUNC_TIM1_CH2N 0x1002
160#define STM32F746_PB0_FUNC_TIM3_CH3 0x1003
161#define STM32F746_PB0_FUNC_TIM8_CH2N 0x1004
162#define STM32F746_PB0_FUNC_UART4_CTS 0x1009
163#define STM32F746_PB0_FUNC_LCD_R3 0x100a
164#define STM32F746_PB0_FUNC_OTG_HS_ULPI_D1 0x100b
165#define STM32F746_PB0_FUNC_ETH_MII_RXD2 0x100c
166#define STM32F746_PB0_FUNC_EVENTOUT 0x1010
167#define STM32F746_PB0_FUNC_ANALOG 0x1011
168
169#define STM32F746_PB1_FUNC_GPIO 0x1100
170#define STM32F746_PB1_FUNC_TIM1_CH3N 0x1102
171#define STM32F746_PB1_FUNC_TIM3_CH4 0x1103
172#define STM32F746_PB1_FUNC_TIM8_CH3N 0x1104
173#define STM32F746_PB1_FUNC_LCD_R6 0x110a
174#define STM32F746_PB1_FUNC_OTG_HS_ULPI_D2 0x110b
175#define STM32F746_PB1_FUNC_ETH_MII_RXD3 0x110c
176#define STM32F746_PB1_FUNC_EVENTOUT 0x1110
177#define STM32F746_PB1_FUNC_ANALOG 0x1111
178
179#define STM32F746_PB2_FUNC_GPIO 0x1200
180#define STM32F746_PB2_FUNC_SAI1_SD_A 0x1207
181#define STM32F746_PB2_FUNC_SPI3_MOSI_I2S3_SD 0x1208
182#define STM32F746_PB2_FUNC_QUADSPI_CLK 0x120a
183#define STM32F746_PB2_FUNC_EVENTOUT 0x1210
184#define STM32F746_PB2_FUNC_ANALOG 0x1211
185
186#define STM32F746_PB3_FUNC_GPIO 0x1300
187#define STM32F746_PB3_FUNC_JTDO_TRACESWO 0x1301
188#define STM32F746_PB3_FUNC_TIM2_CH2 0x1302
189#define STM32F746_PB3_FUNC_SPI1_SCK_I2S1_CK 0x1306
190#define STM32F746_PB3_FUNC_SPI3_SCK_I2S3_CK 0x1307
191#define STM32F746_PB3_FUNC_EVENTOUT 0x1310
192#define STM32F746_PB3_FUNC_ANALOG 0x1311
193
194#define STM32F746_PB4_FUNC_GPIO 0x1400
195#define STM32F746_PB4_FUNC_NJTRST 0x1401
196#define STM32F746_PB4_FUNC_TIM3_CH1 0x1403
197#define STM32F746_PB4_FUNC_SPI1_MISO 0x1406
198#define STM32F746_PB4_FUNC_SPI3_MISO 0x1407
199#define STM32F746_PB4_FUNC_SPI2_NSS_I2S2_WS 0x1408
200#define STM32F746_PB4_FUNC_EVENTOUT 0x1410
201#define STM32F746_PB4_FUNC_ANALOG 0x1411
202
203#define STM32F746_PB5_FUNC_GPIO 0x1500
204#define STM32F746_PB5_FUNC_TIM3_CH2 0x1503
205#define STM32F746_PB5_FUNC_I2C1_SMBA 0x1505
206#define STM32F746_PB5_FUNC_SPI1_MOSI_I2S1_SD 0x1506
207#define STM32F746_PB5_FUNC_SPI3_MOSI_I2S3_SD 0x1507
208#define STM32F746_PB5_FUNC_CAN2_RX 0x150a
209#define STM32F746_PB5_FUNC_OTG_HS_ULPI_D7 0x150b
210#define STM32F746_PB5_FUNC_ETH_PPS_OUT 0x150c
211#define STM32F746_PB5_FUNC_FMC_SDCKE1 0x150d
212#define STM32F746_PB5_FUNC_DCMI_D10 0x150e
213#define STM32F746_PB5_FUNC_EVENTOUT 0x1510
214#define STM32F746_PB5_FUNC_ANALOG 0x1511
215
216#define STM32F746_PB6_FUNC_GPIO 0x1600
217#define STM32F746_PB6_FUNC_TIM4_CH1 0x1603
218#define STM32F746_PB6_FUNC_HDMI_CEC 0x1604
219#define STM32F746_PB6_FUNC_I2C1_SCL 0x1605
220#define STM32F746_PB6_FUNC_USART1_TX 0x1608
221#define STM32F746_PB6_FUNC_CAN2_TX 0x160a
222#define STM32F746_PB6_FUNC_QUADSPI_BK1_NCS 0x160b
223#define STM32F746_PB6_FUNC_FMC_SDNE1 0x160d
224#define STM32F746_PB6_FUNC_DCMI_D5 0x160e
225#define STM32F746_PB6_FUNC_EVENTOUT 0x1610
226#define STM32F746_PB6_FUNC_ANALOG 0x1611
227
228#define STM32F746_PB7_FUNC_GPIO 0x1700
229#define STM32F746_PB7_FUNC_TIM4_CH2 0x1703
230#define STM32F746_PB7_FUNC_I2C1_SDA 0x1705
231#define STM32F746_PB7_FUNC_USART1_RX 0x1708
232#define STM32F746_PB7_FUNC_FMC_NL 0x170d
233#define STM32F746_PB7_FUNC_DCMI_VSYNC 0x170e
234#define STM32F746_PB7_FUNC_EVENTOUT 0x1710
235#define STM32F746_PB7_FUNC_ANALOG 0x1711
236
237#define STM32F746_PB8_FUNC_GPIO 0x1800
238#define STM32F746_PB8_FUNC_TIM4_CH3 0x1803
239#define STM32F746_PB8_FUNC_TIM10_CH1 0x1804
240#define STM32F746_PB8_FUNC_I2C1_SCL 0x1805
241#define STM32F746_PB8_FUNC_CAN1_RX 0x180a
242#define STM32F746_PB8_FUNC_ETH_MII_TXD3 0x180c
243#define STM32F746_PB8_FUNC_SDMMC1_D4 0x180d
244#define STM32F746_PB8_FUNC_DCMI_D6 0x180e
245#define STM32F746_PB8_FUNC_LCD_B6 0x180f
246#define STM32F746_PB8_FUNC_EVENTOUT 0x1810
247#define STM32F746_PB8_FUNC_ANALOG 0x1811
248
249#define STM32F746_PB9_FUNC_GPIO 0x1900
250#define STM32F746_PB9_FUNC_TIM4_CH4 0x1903
251#define STM32F746_PB9_FUNC_TIM11_CH1 0x1904
252#define STM32F746_PB9_FUNC_I2C1_SDA 0x1905
253#define STM32F746_PB9_FUNC_SPI2_NSS_I2S2_WS 0x1906
254#define STM32F746_PB9_FUNC_CAN1_TX 0x190a
255#define STM32F746_PB9_FUNC_SDMMC1_D5 0x190d
256#define STM32F746_PB9_FUNC_DCMI_D7 0x190e
257#define STM32F746_PB9_FUNC_LCD_B7 0x190f
258#define STM32F746_PB9_FUNC_EVENTOUT 0x1910
259#define STM32F746_PB9_FUNC_ANALOG 0x1911
260
261#define STM32F746_PB10_FUNC_GPIO 0x1a00
262#define STM32F746_PB10_FUNC_TIM2_CH3 0x1a02
263#define STM32F746_PB10_FUNC_I2C2_SCL 0x1a05
264#define STM32F746_PB10_FUNC_SPI2_SCK_I2S2_CK 0x1a06
265#define STM32F746_PB10_FUNC_USART3_TX 0x1a08
266#define STM32F746_PB10_FUNC_OTG_HS_ULPI_D3 0x1a0b
267#define STM32F746_PB10_FUNC_ETH_MII_RX_ER 0x1a0c
268#define STM32F746_PB10_FUNC_LCD_G4 0x1a0f
269#define STM32F746_PB10_FUNC_EVENTOUT 0x1a10
270#define STM32F746_PB10_FUNC_ANALOG 0x1a11
271
272#define STM32F746_PB11_FUNC_GPIO 0x1b00
273#define STM32F746_PB11_FUNC_TIM2_CH4 0x1b02
274#define STM32F746_PB11_FUNC_I2C2_SDA 0x1b05
275#define STM32F746_PB11_FUNC_USART3_RX 0x1b08
276#define STM32F746_PB11_FUNC_OTG_HS_ULPI_D4 0x1b0b
277#define STM32F746_PB11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN 0x1b0c
278#define STM32F746_PB11_FUNC_LCD_G5 0x1b0f
279#define STM32F746_PB11_FUNC_EVENTOUT 0x1b10
280#define STM32F746_PB11_FUNC_ANALOG 0x1b11
281
282#define STM32F746_PB12_FUNC_GPIO 0x1c00
283#define STM32F746_PB12_FUNC_TIM1_BKIN 0x1c02
284#define STM32F746_PB12_FUNC_I2C2_SMBA 0x1c05
285#define STM32F746_PB12_FUNC_SPI2_NSS_I2S2_WS 0x1c06
286#define STM32F746_PB12_FUNC_USART3_CK 0x1c08
287#define STM32F746_PB12_FUNC_CAN2_RX 0x1c0a
288#define STM32F746_PB12_FUNC_OTG_HS_ULPI_D5 0x1c0b
289#define STM32F746_PB12_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0 0x1c0c
290#define STM32F746_PB12_FUNC_OTG_HS_ID 0x1c0d
291#define STM32F746_PB12_FUNC_EVENTOUT 0x1c10
292#define STM32F746_PB12_FUNC_ANALOG 0x1c11
293
294#define STM32F746_PB13_FUNC_GPIO 0x1d00
295#define STM32F746_PB13_FUNC_TIM1_CH1N 0x1d02
296#define STM32F746_PB13_FUNC_SPI2_SCK_I2S2_CK 0x1d06
297#define STM32F746_PB13_FUNC_USART3_CTS 0x1d08
298#define STM32F746_PB13_FUNC_CAN2_TX 0x1d0a
299#define STM32F746_PB13_FUNC_OTG_HS_ULPI_D6 0x1d0b
300#define STM32F746_PB13_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1 0x1d0c
301#define STM32F746_PB13_FUNC_EVENTOUT 0x1d10
302#define STM32F746_PB13_FUNC_ANALOG 0x1d11
303
304#define STM32F746_PB14_FUNC_GPIO 0x1e00
305#define STM32F746_PB14_FUNC_TIM1_CH2N 0x1e02
306#define STM32F746_PB14_FUNC_TIM8_CH2N 0x1e04
307#define STM32F746_PB14_FUNC_SPI2_MISO 0x1e06
308#define STM32F746_PB14_FUNC_USART3_RTS 0x1e08
309#define STM32F746_PB14_FUNC_TIM12_CH1 0x1e0a
310#define STM32F746_PB14_FUNC_OTG_HS_DM 0x1e0d
311#define STM32F746_PB14_FUNC_EVENTOUT 0x1e10
312#define STM32F746_PB14_FUNC_ANALOG 0x1e11
313
314#define STM32F746_PB15_FUNC_GPIO 0x1f00
315#define STM32F746_PB15_FUNC_RTC_REFIN 0x1f01
316#define STM32F746_PB15_FUNC_TIM1_CH3N 0x1f02
317#define STM32F746_PB15_FUNC_TIM8_CH3N 0x1f04
318#define STM32F746_PB15_FUNC_SPI2_MOSI_I2S2_SD 0x1f06
319#define STM32F746_PB15_FUNC_TIM12_CH2 0x1f0a
320#define STM32F746_PB15_FUNC_OTG_HS_DP 0x1f0d
321#define STM32F746_PB15_FUNC_EVENTOUT 0x1f10
322#define STM32F746_PB15_FUNC_ANALOG 0x1f11
323
324
325#define STM32F746_PC0_FUNC_GPIO 0x2000
326#define STM32F746_PC0_FUNC_SAI2_FS_B 0x2009
327#define STM32F746_PC0_FUNC_OTG_HS_ULPI_STP 0x200b
328#define STM32F746_PC0_FUNC_FMC_SDNWE 0x200d
329#define STM32F746_PC0_FUNC_LCD_R5 0x200f
330#define STM32F746_PC0_FUNC_EVENTOUT 0x2010
331#define STM32F746_PC0_FUNC_ANALOG 0x2011
332
333#define STM32F746_PC1_FUNC_GPIO 0x2100
334#define STM32F746_PC1_FUNC_TRACED0 0x2101
335#define STM32F746_PC1_FUNC_SPI2_MOSI_I2S2_SD 0x2106
336#define STM32F746_PC1_FUNC_SAI1_SD_A 0x2107
337#define STM32F746_PC1_FUNC_ETH_MDC 0x210c
338#define STM32F746_PC1_FUNC_EVENTOUT 0x2110
339#define STM32F746_PC1_FUNC_ANALOG 0x2111
340
341#define STM32F746_PC2_FUNC_GPIO 0x2200
342#define STM32F746_PC2_FUNC_SPI2_MISO 0x2206
343#define STM32F746_PC2_FUNC_OTG_HS_ULPI_DIR 0x220b
344#define STM32F746_PC2_FUNC_ETH_MII_TXD2 0x220c
345#define STM32F746_PC2_FUNC_FMC_SDNE0 0x220d
346#define STM32F746_PC2_FUNC_EVENTOUT 0x2210
347#define STM32F746_PC2_FUNC_ANALOG 0x2211
348
349#define STM32F746_PC3_FUNC_GPIO 0x2300
350#define STM32F746_PC3_FUNC_SPI2_MOSI_I2S2_SD 0x2306
351#define STM32F746_PC3_FUNC_OTG_HS_ULPI_NXT 0x230b
352#define STM32F746_PC3_FUNC_ETH_MII_TX_CLK 0x230c
353#define STM32F746_PC3_FUNC_FMC_SDCKE0 0x230d
354#define STM32F746_PC3_FUNC_EVENTOUT 0x2310
355#define STM32F746_PC3_FUNC_ANALOG 0x2311
356
357#define STM32F746_PC4_FUNC_GPIO 0x2400
358#define STM32F746_PC4_FUNC_I2S1_MCK 0x2406
359#define STM32F746_PC4_FUNC_SPDIFRX_IN2 0x2409
360#define STM32F746_PC4_FUNC_ETH_MII_RXD0_ETH_RMII_RXD0 0x240c
361#define STM32F746_PC4_FUNC_FMC_SDNE0 0x240d
362#define STM32F746_PC4_FUNC_EVENTOUT 0x2410
363#define STM32F746_PC4_FUNC_ANALOG 0x2411
364
365#define STM32F746_PC5_FUNC_GPIO 0x2500
366#define STM32F746_PC5_FUNC_SPDIFRX_IN3 0x2509
367#define STM32F746_PC5_FUNC_ETH_MII_RXD1_ETH_RMII_RXD1 0x250c
368#define STM32F746_PC5_FUNC_FMC_SDCKE0 0x250d
369#define STM32F746_PC5_FUNC_EVENTOUT 0x2510
370#define STM32F746_PC5_FUNC_ANALOG 0x2511
371
372#define STM32F746_PC6_FUNC_GPIO 0x2600
373#define STM32F746_PC6_FUNC_TIM3_CH1 0x2603
374#define STM32F746_PC6_FUNC_TIM8_CH1 0x2604
375#define STM32F746_PC6_FUNC_I2S2_MCK 0x2606
376#define STM32F746_PC6_FUNC_USART6_TX 0x2609
377#define STM32F746_PC6_FUNC_SDMMC1_D6 0x260d
378#define STM32F746_PC6_FUNC_DCMI_D0 0x260e
379#define STM32F746_PC6_FUNC_LCD_HSYNC 0x260f
380#define STM32F746_PC6_FUNC_EVENTOUT 0x2610
381#define STM32F746_PC6_FUNC_ANALOG 0x2611
382
383#define STM32F746_PC7_FUNC_GPIO 0x2700
384#define STM32F746_PC7_FUNC_TIM3_CH2 0x2703
385#define STM32F746_PC7_FUNC_TIM8_CH2 0x2704
386#define STM32F746_PC7_FUNC_I2S3_MCK 0x2707
387#define STM32F746_PC7_FUNC_USART6_RX 0x2709
388#define STM32F746_PC7_FUNC_SDMMC1_D7 0x270d
389#define STM32F746_PC7_FUNC_DCMI_D1 0x270e
390#define STM32F746_PC7_FUNC_LCD_G6 0x270f
391#define STM32F746_PC7_FUNC_EVENTOUT 0x2710
392#define STM32F746_PC7_FUNC_ANALOG 0x2711
393
394#define STM32F746_PC8_FUNC_GPIO 0x2800
395#define STM32F746_PC8_FUNC_TRACED1 0x2801
396#define STM32F746_PC8_FUNC_TIM3_CH3 0x2803
397#define STM32F746_PC8_FUNC_TIM8_CH3 0x2804
398#define STM32F746_PC8_FUNC_UART5_RTS 0x2808
399#define STM32F746_PC8_FUNC_USART6_CK 0x2809
400#define STM32F746_PC8_FUNC_SDMMC1_D0 0x280d
401#define STM32F746_PC8_FUNC_DCMI_D2 0x280e
402#define STM32F746_PC8_FUNC_EVENTOUT 0x2810
403#define STM32F746_PC8_FUNC_ANALOG 0x2811
404
405#define STM32F746_PC9_FUNC_GPIO 0x2900
406#define STM32F746_PC9_FUNC_MCO2 0x2901
407#define STM32F746_PC9_FUNC_TIM3_CH4 0x2903
408#define STM32F746_PC9_FUNC_TIM8_CH4 0x2904
409#define STM32F746_PC9_FUNC_I2C3_SDA 0x2905
410#define STM32F746_PC9_FUNC_I2S_CKIN 0x2906
411#define STM32F746_PC9_FUNC_UART5_CTS 0x2908
412#define STM32F746_PC9_FUNC_QUADSPI_BK1_IO0 0x290a
413#define STM32F746_PC9_FUNC_SDMMC1_D1 0x290d
414#define STM32F746_PC9_FUNC_DCMI_D3 0x290e
415#define STM32F746_PC9_FUNC_EVENTOUT 0x2910
416#define STM32F746_PC9_FUNC_ANALOG 0x2911
417
418#define STM32F746_PC10_FUNC_GPIO 0x2a00
419#define STM32F746_PC10_FUNC_SPI3_SCK_I2S3_CK 0x2a07
420#define STM32F746_PC10_FUNC_USART3_TX 0x2a08
421#define STM32F746_PC10_FUNC_UART4_TX 0x2a09
422#define STM32F746_PC10_FUNC_QUADSPI_BK1_IO1 0x2a0a
423#define STM32F746_PC10_FUNC_SDMMC1_D2 0x2a0d
424#define STM32F746_PC10_FUNC_DCMI_D8 0x2a0e
425#define STM32F746_PC10_FUNC_LCD_R2 0x2a0f
426#define STM32F746_PC10_FUNC_EVENTOUT 0x2a10
427#define STM32F746_PC10_FUNC_ANALOG 0x2a11
428
429#define STM32F746_PC11_FUNC_GPIO 0x2b00
430#define STM32F746_PC11_FUNC_SPI3_MISO 0x2b07
431#define STM32F746_PC11_FUNC_USART3_RX 0x2b08
432#define STM32F746_PC11_FUNC_UART4_RX 0x2b09
433#define STM32F746_PC11_FUNC_QUADSPI_BK2_NCS 0x2b0a
434#define STM32F746_PC11_FUNC_SDMMC1_D3 0x2b0d
435#define STM32F746_PC11_FUNC_DCMI_D4 0x2b0e
436#define STM32F746_PC11_FUNC_EVENTOUT 0x2b10
437#define STM32F746_PC11_FUNC_ANALOG 0x2b11
438
439#define STM32F746_PC12_FUNC_GPIO 0x2c00
440#define STM32F746_PC12_FUNC_TRACED3 0x2c01
441#define STM32F746_PC12_FUNC_SPI3_MOSI_I2S3_SD 0x2c07
442#define STM32F746_PC12_FUNC_USART3_CK 0x2c08
443#define STM32F746_PC12_FUNC_UART5_TX 0x2c09
444#define STM32F746_PC12_FUNC_SDMMC1_CK 0x2c0d
445#define STM32F746_PC12_FUNC_DCMI_D9 0x2c0e
446#define STM32F746_PC12_FUNC_EVENTOUT 0x2c10
447#define STM32F746_PC12_FUNC_ANALOG 0x2c11
448
449#define STM32F746_PC13_FUNC_GPIO 0x2d00
450#define STM32F746_PC13_FUNC_EVENTOUT 0x2d10
451#define STM32F746_PC13_FUNC_ANALOG 0x2d11
452
453#define STM32F746_PC14_FUNC_GPIO 0x2e00
454#define STM32F746_PC14_FUNC_EVENTOUT 0x2e10
455#define STM32F746_PC14_FUNC_ANALOG 0x2e11
456
457#define STM32F746_PC15_FUNC_GPIO 0x2f00
458#define STM32F746_PC15_FUNC_EVENTOUT 0x2f10
459#define STM32F746_PC15_FUNC_ANALOG 0x2f11
460
461
462#define STM32F746_PD0_FUNC_GPIO 0x3000
463#define STM32F746_PD0_FUNC_CAN1_RX 0x300a
464#define STM32F746_PD0_FUNC_FMC_D2 0x300d
465#define STM32F746_PD0_FUNC_EVENTOUT 0x3010
466#define STM32F746_PD0_FUNC_ANALOG 0x3011
467
468#define STM32F746_PD1_FUNC_GPIO 0x3100
469#define STM32F746_PD1_FUNC_CAN1_TX 0x310a
470#define STM32F746_PD1_FUNC_FMC_D3 0x310d
471#define STM32F746_PD1_FUNC_EVENTOUT 0x3110
472#define STM32F746_PD1_FUNC_ANALOG 0x3111
473
474#define STM32F746_PD2_FUNC_GPIO 0x3200
475#define STM32F746_PD2_FUNC_TRACED2 0x3201
476#define STM32F746_PD2_FUNC_TIM3_ETR 0x3203
477#define STM32F746_PD2_FUNC_UART5_RX 0x3209
478#define STM32F746_PD2_FUNC_SDMMC1_CMD 0x320d
479#define STM32F746_PD2_FUNC_DCMI_D11 0x320e
480#define STM32F746_PD2_FUNC_EVENTOUT 0x3210
481#define STM32F746_PD2_FUNC_ANALOG 0x3211
482
483#define STM32F746_PD3_FUNC_GPIO 0x3300
484#define STM32F746_PD3_FUNC_SPI2_SCK_I2S2_CK 0x3306
485#define STM32F746_PD3_FUNC_USART2_CTS 0x3308
486#define STM32F746_PD3_FUNC_FMC_CLK 0x330d
487#define STM32F746_PD3_FUNC_DCMI_D5 0x330e
488#define STM32F746_PD3_FUNC_LCD_G7 0x330f
489#define STM32F746_PD3_FUNC_EVENTOUT 0x3310
490#define STM32F746_PD3_FUNC_ANALOG 0x3311
491
492#define STM32F746_PD4_FUNC_GPIO 0x3400
493#define STM32F746_PD4_FUNC_USART2_RTS 0x3408
494#define STM32F746_PD4_FUNC_FMC_NOE 0x340d
495#define STM32F746_PD4_FUNC_EVENTOUT 0x3410
496#define STM32F746_PD4_FUNC_ANALOG 0x3411
497
498#define STM32F746_PD5_FUNC_GPIO 0x3500
499#define STM32F746_PD5_FUNC_USART2_TX 0x3508
500#define STM32F746_PD5_FUNC_FMC_NWE 0x350d
501#define STM32F746_PD5_FUNC_EVENTOUT 0x3510
502#define STM32F746_PD5_FUNC_ANALOG 0x3511
503
504#define STM32F746_PD6_FUNC_GPIO 0x3600
505#define STM32F746_PD6_FUNC_SPI3_MOSI_I2S3_SD 0x3606
506#define STM32F746_PD6_FUNC_SAI1_SD_A 0x3607
507#define STM32F746_PD6_FUNC_USART2_RX 0x3608
508#define STM32F746_PD6_FUNC_FMC_NWAIT 0x360d
509#define STM32F746_PD6_FUNC_DCMI_D10 0x360e
510#define STM32F746_PD6_FUNC_LCD_B2 0x360f
511#define STM32F746_PD6_FUNC_EVENTOUT 0x3610
512#define STM32F746_PD6_FUNC_ANALOG 0x3611
513
514#define STM32F746_PD7_FUNC_GPIO 0x3700
515#define STM32F746_PD7_FUNC_USART2_CK 0x3708
516#define STM32F746_PD7_FUNC_SPDIFRX_IN0 0x3709
517#define STM32F746_PD7_FUNC_FMC_NE1 0x370d
518#define STM32F746_PD7_FUNC_EVENTOUT 0x3710
519#define STM32F746_PD7_FUNC_ANALOG 0x3711
520
521#define STM32F746_PD8_FUNC_GPIO 0x3800
522#define STM32F746_PD8_FUNC_USART3_TX 0x3808
523#define STM32F746_PD8_FUNC_SPDIFRX_IN1 0x3809
524#define STM32F746_PD8_FUNC_FMC_D13 0x380d
525#define STM32F746_PD8_FUNC_EVENTOUT 0x3810
526#define STM32F746_PD8_FUNC_ANALOG 0x3811
527
528#define STM32F746_PD9_FUNC_GPIO 0x3900
529#define STM32F746_PD9_FUNC_USART3_RX 0x3908
530#define STM32F746_PD9_FUNC_FMC_D14 0x390d
531#define STM32F746_PD9_FUNC_EVENTOUT 0x3910
532#define STM32F746_PD9_FUNC_ANALOG 0x3911
533
534#define STM32F746_PD10_FUNC_GPIO 0x3a00
535#define STM32F746_PD10_FUNC_USART3_CK 0x3a08
536#define STM32F746_PD10_FUNC_FMC_D15 0x3a0d
537#define STM32F746_PD10_FUNC_LCD_B3 0x3a0f
538#define STM32F746_PD10_FUNC_EVENTOUT 0x3a10
539#define STM32F746_PD10_FUNC_ANALOG 0x3a11
540
541#define STM32F746_PD11_FUNC_GPIO 0x3b00
542#define STM32F746_PD11_FUNC_I2C4_SMBA 0x3b05
543#define STM32F746_PD11_FUNC_USART3_CTS 0x3b08
544#define STM32F746_PD11_FUNC_QUADSPI_BK1_IO0 0x3b0a
545#define STM32F746_PD11_FUNC_SAI2_SD_A 0x3b0b
546#define STM32F746_PD11_FUNC_FMC_A16_FMC_CLE 0x3b0d
547#define STM32F746_PD11_FUNC_EVENTOUT 0x3b10
548#define STM32F746_PD11_FUNC_ANALOG 0x3b11
549
550#define STM32F746_PD12_FUNC_GPIO 0x3c00
551#define STM32F746_PD12_FUNC_TIM4_CH1 0x3c03
552#define STM32F746_PD12_FUNC_LPTIM1_IN1 0x3c04
553#define STM32F746_PD12_FUNC_I2C4_SCL 0x3c05
554#define STM32F746_PD12_FUNC_USART3_RTS 0x3c08
555#define STM32F746_PD12_FUNC_QUADSPI_BK1_IO1 0x3c0a
556#define STM32F746_PD12_FUNC_SAI2_FS_A 0x3c0b
557#define STM32F746_PD12_FUNC_FMC_A17_FMC_ALE 0x3c0d
558#define STM32F746_PD12_FUNC_EVENTOUT 0x3c10
559#define STM32F746_PD12_FUNC_ANALOG 0x3c11
560
561#define STM32F746_PD13_FUNC_GPIO 0x3d00
562#define STM32F746_PD13_FUNC_TIM4_CH2 0x3d03
563#define STM32F746_PD13_FUNC_LPTIM1_OUT 0x3d04
564#define STM32F746_PD13_FUNC_I2C4_SDA 0x3d05
565#define STM32F746_PD13_FUNC_QUADSPI_BK1_IO3 0x3d0a
566#define STM32F746_PD13_FUNC_SAI2_SCK_A 0x3d0b
567#define STM32F746_PD13_FUNC_FMC_A18 0x3d0d
568#define STM32F746_PD13_FUNC_EVENTOUT 0x3d10
569#define STM32F746_PD13_FUNC_ANALOG 0x3d11
570
571#define STM32F746_PD14_FUNC_GPIO 0x3e00
572#define STM32F746_PD14_FUNC_TIM4_CH3 0x3e03
573#define STM32F746_PD14_FUNC_UART8_CTS 0x3e09
574#define STM32F746_PD14_FUNC_FMC_D0 0x3e0d
575#define STM32F746_PD14_FUNC_EVENTOUT 0x3e10
576#define STM32F746_PD14_FUNC_ANALOG 0x3e11
577
578#define STM32F746_PD15_FUNC_GPIO 0x3f00
579#define STM32F746_PD15_FUNC_TIM4_CH4 0x3f03
580#define STM32F746_PD15_FUNC_UART8_RTS 0x3f09
581#define STM32F746_PD15_FUNC_FMC_D1 0x3f0d
582#define STM32F746_PD15_FUNC_EVENTOUT 0x3f10
583#define STM32F746_PD15_FUNC_ANALOG 0x3f11
584
585
586#define STM32F746_PE0_FUNC_GPIO 0x4000
587#define STM32F746_PE0_FUNC_TIM4_ETR 0x4003
588#define STM32F746_PE0_FUNC_LPTIM1_ETR 0x4004
589#define STM32F746_PE0_FUNC_UART8_RX 0x4009
590#define STM32F746_PE0_FUNC_SAI2_MCLK_A 0x400b
591#define STM32F746_PE0_FUNC_FMC_NBL0 0x400d
592#define STM32F746_PE0_FUNC_DCMI_D2 0x400e
593#define STM32F746_PE0_FUNC_EVENTOUT 0x4010
594#define STM32F746_PE0_FUNC_ANALOG 0x4011
595
596#define STM32F746_PE1_FUNC_GPIO 0x4100
597#define STM32F746_PE1_FUNC_LPTIM1_IN2 0x4104
598#define STM32F746_PE1_FUNC_UART8_TX 0x4109
599#define STM32F746_PE1_FUNC_FMC_NBL1 0x410d
600#define STM32F746_PE1_FUNC_DCMI_D3 0x410e
601#define STM32F746_PE1_FUNC_EVENTOUT 0x4110
602#define STM32F746_PE1_FUNC_ANALOG 0x4111
603
604#define STM32F746_PE2_FUNC_GPIO 0x4200
605#define STM32F746_PE2_FUNC_TRACECLK 0x4201
606#define STM32F746_PE2_FUNC_SPI4_SCK 0x4206
607#define STM32F746_PE2_FUNC_SAI1_MCLK_A 0x4207
608#define STM32F746_PE2_FUNC_QUADSPI_BK1_IO2 0x420a
609#define STM32F746_PE2_FUNC_ETH_MII_TXD3 0x420c
610#define STM32F746_PE2_FUNC_FMC_A23 0x420d
611#define STM32F746_PE2_FUNC_EVENTOUT 0x4210
612#define STM32F746_PE2_FUNC_ANALOG 0x4211
613
614#define STM32F746_PE3_FUNC_GPIO 0x4300
615#define STM32F746_PE3_FUNC_TRACED0 0x4301
616#define STM32F746_PE3_FUNC_SAI1_SD_B 0x4307
617#define STM32F746_PE3_FUNC_FMC_A19 0x430d
618#define STM32F746_PE3_FUNC_EVENTOUT 0x4310
619#define STM32F746_PE3_FUNC_ANALOG 0x4311
620
621#define STM32F746_PE4_FUNC_GPIO 0x4400
622#define STM32F746_PE4_FUNC_TRACED1 0x4401
623#define STM32F746_PE4_FUNC_SPI4_NSS 0x4406
624#define STM32F746_PE4_FUNC_SAI1_FS_A 0x4407
625#define STM32F746_PE4_FUNC_FMC_A20 0x440d
626#define STM32F746_PE4_FUNC_DCMI_D4 0x440e
627#define STM32F746_PE4_FUNC_LCD_B0 0x440f
628#define STM32F746_PE4_FUNC_EVENTOUT 0x4410
629#define STM32F746_PE4_FUNC_ANALOG 0x4411
630
631#define STM32F746_PE5_FUNC_GPIO 0x4500
632#define STM32F746_PE5_FUNC_TRACED2 0x4501
633#define STM32F746_PE5_FUNC_TIM9_CH1 0x4504
634#define STM32F746_PE5_FUNC_SPI4_MISO 0x4506
635#define STM32F746_PE5_FUNC_SAI1_SCK_A 0x4507
636#define STM32F746_PE5_FUNC_FMC_A21 0x450d
637#define STM32F746_PE5_FUNC_DCMI_D6 0x450e
638#define STM32F746_PE5_FUNC_LCD_G0 0x450f
639#define STM32F746_PE5_FUNC_EVENTOUT 0x4510
640#define STM32F746_PE5_FUNC_ANALOG 0x4511
641
642#define STM32F746_PE6_FUNC_GPIO 0x4600
643#define STM32F746_PE6_FUNC_TRACED3 0x4601
644#define STM32F746_PE6_FUNC_TIM1_BKIN2 0x4602
645#define STM32F746_PE6_FUNC_TIM9_CH2 0x4604
646#define STM32F746_PE6_FUNC_SPI4_MOSI 0x4606
647#define STM32F746_PE6_FUNC_SAI1_SD_A 0x4607
648#define STM32F746_PE6_FUNC_SAI2_MCLK_B 0x460b
649#define STM32F746_PE6_FUNC_FMC_A22 0x460d
650#define STM32F746_PE6_FUNC_DCMI_D7 0x460e
651#define STM32F746_PE6_FUNC_LCD_G1 0x460f
652#define STM32F746_PE6_FUNC_EVENTOUT 0x4610
653#define STM32F746_PE6_FUNC_ANALOG 0x4611
654
655#define STM32F746_PE7_FUNC_GPIO 0x4700
656#define STM32F746_PE7_FUNC_TIM1_ETR 0x4702
657#define STM32F746_PE7_FUNC_UART7_RX 0x4709
658#define STM32F746_PE7_FUNC_QUADSPI_BK2_IO0 0x470b
659#define STM32F746_PE7_FUNC_FMC_D4 0x470d
660#define STM32F746_PE7_FUNC_EVENTOUT 0x4710
661#define STM32F746_PE7_FUNC_ANALOG 0x4711
662
663#define STM32F746_PE8_FUNC_GPIO 0x4800
664#define STM32F746_PE8_FUNC_TIM1_CH1N 0x4802
665#define STM32F746_PE8_FUNC_UART7_TX 0x4809
666#define STM32F746_PE8_FUNC_QUADSPI_BK2_IO1 0x480b
667#define STM32F746_PE8_FUNC_FMC_D5 0x480d
668#define STM32F746_PE8_FUNC_EVENTOUT 0x4810
669#define STM32F746_PE8_FUNC_ANALOG 0x4811
670
671#define STM32F746_PE9_FUNC_GPIO 0x4900
672#define STM32F746_PE9_FUNC_TIM1_CH1 0x4902
673#define STM32F746_PE9_FUNC_UART7_RTS 0x4909
674#define STM32F746_PE9_FUNC_QUADSPI_BK2_IO2 0x490b
675#define STM32F746_PE9_FUNC_FMC_D6 0x490d
676#define STM32F746_PE9_FUNC_EVENTOUT 0x4910
677#define STM32F746_PE9_FUNC_ANALOG 0x4911
678
679#define STM32F746_PE10_FUNC_GPIO 0x4a00
680#define STM32F746_PE10_FUNC_TIM1_CH2N 0x4a02
681#define STM32F746_PE10_FUNC_UART7_CTS 0x4a09
682#define STM32F746_PE10_FUNC_QUADSPI_BK2_IO3 0x4a0b
683#define STM32F746_PE10_FUNC_FMC_D7 0x4a0d
684#define STM32F746_PE10_FUNC_EVENTOUT 0x4a10
685#define STM32F746_PE10_FUNC_ANALOG 0x4a11
686
687#define STM32F746_PE11_FUNC_GPIO 0x4b00
688#define STM32F746_PE11_FUNC_TIM1_CH2 0x4b02
689#define STM32F746_PE11_FUNC_SPI4_NSS 0x4b06
690#define STM32F746_PE11_FUNC_SAI2_SD_B 0x4b0b
691#define STM32F746_PE11_FUNC_FMC_D8 0x4b0d
692#define STM32F746_PE11_FUNC_LCD_G3 0x4b0f
693#define STM32F746_PE11_FUNC_EVENTOUT 0x4b10
694#define STM32F746_PE11_FUNC_ANALOG 0x4b11
695
696#define STM32F746_PE12_FUNC_GPIO 0x4c00
697#define STM32F746_PE12_FUNC_TIM1_CH3N 0x4c02
698#define STM32F746_PE12_FUNC_SPI4_SCK 0x4c06
699#define STM32F746_PE12_FUNC_SAI2_SCK_B 0x4c0b
700#define STM32F746_PE12_FUNC_FMC_D9 0x4c0d
701#define STM32F746_PE12_FUNC_LCD_B4 0x4c0f
702#define STM32F746_PE12_FUNC_EVENTOUT 0x4c10
703#define STM32F746_PE12_FUNC_ANALOG 0x4c11
704
705#define STM32F746_PE13_FUNC_GPIO 0x4d00
706#define STM32F746_PE13_FUNC_TIM1_CH3 0x4d02
707#define STM32F746_PE13_FUNC_SPI4_MISO 0x4d06
708#define STM32F746_PE13_FUNC_SAI2_FS_B 0x4d0b
709#define STM32F746_PE13_FUNC_FMC_D10 0x4d0d
710#define STM32F746_PE13_FUNC_LCD_DE 0x4d0f
711#define STM32F746_PE13_FUNC_EVENTOUT 0x4d10
712#define STM32F746_PE13_FUNC_ANALOG 0x4d11
713
714#define STM32F746_PE14_FUNC_GPIO 0x4e00
715#define STM32F746_PE14_FUNC_TIM1_CH4 0x4e02
716#define STM32F746_PE14_FUNC_SPI4_MOSI 0x4e06
717#define STM32F746_PE14_FUNC_SAI2_MCLK_B 0x4e0b
718#define STM32F746_PE14_FUNC_FMC_D11 0x4e0d
719#define STM32F746_PE14_FUNC_LCD_CLK 0x4e0f
720#define STM32F746_PE14_FUNC_EVENTOUT 0x4e10
721#define STM32F746_PE14_FUNC_ANALOG 0x4e11
722
723#define STM32F746_PE15_FUNC_GPIO 0x4f00
724#define STM32F746_PE15_FUNC_TIM1_BKIN 0x4f02
725#define STM32F746_PE15_FUNC_FMC_D12 0x4f0d
726#define STM32F746_PE15_FUNC_LCD_R7 0x4f0f
727#define STM32F746_PE15_FUNC_EVENTOUT 0x4f10
728#define STM32F746_PE15_FUNC_ANALOG 0x4f11
729
730
731#define STM32F746_PF0_FUNC_GPIO 0x5000
732#define STM32F746_PF0_FUNC_I2C2_SDA 0x5005
733#define STM32F746_PF0_FUNC_FMC_A0 0x500d
734#define STM32F746_PF0_FUNC_EVENTOUT 0x5010
735#define STM32F746_PF0_FUNC_ANALOG 0x5011
736
737#define STM32F746_PF1_FUNC_GPIO 0x5100
738#define STM32F746_PF1_FUNC_I2C2_SCL 0x5105
739#define STM32F746_PF1_FUNC_FMC_A1 0x510d
740#define STM32F746_PF1_FUNC_EVENTOUT 0x5110
741#define STM32F746_PF1_FUNC_ANALOG 0x5111
742
743#define STM32F746_PF2_FUNC_GPIO 0x5200
744#define STM32F746_PF2_FUNC_I2C2_SMBA 0x5205
745#define STM32F746_PF2_FUNC_FMC_A2 0x520d
746#define STM32F746_PF2_FUNC_EVENTOUT 0x5210
747#define STM32F746_PF2_FUNC_ANALOG 0x5211
748
749#define STM32F746_PF3_FUNC_GPIO 0x5300
750#define STM32F746_PF3_FUNC_FMC_A3 0x530d
751#define STM32F746_PF3_FUNC_EVENTOUT 0x5310
752#define STM32F746_PF3_FUNC_ANALOG 0x5311
753
754#define STM32F746_PF4_FUNC_GPIO 0x5400
755#define STM32F746_PF4_FUNC_FMC_A4 0x540d
756#define STM32F746_PF4_FUNC_EVENTOUT 0x5410
757#define STM32F746_PF4_FUNC_ANALOG 0x5411
758
759#define STM32F746_PF5_FUNC_GPIO 0x5500
760#define STM32F746_PF5_FUNC_FMC_A5 0x550d
761#define STM32F746_PF5_FUNC_EVENTOUT 0x5510
762#define STM32F746_PF5_FUNC_ANALOG 0x5511
763
764#define STM32F746_PF6_FUNC_GPIO 0x5600
765#define STM32F746_PF6_FUNC_TIM10_CH1 0x5604
766#define STM32F746_PF6_FUNC_SPI5_NSS 0x5606
767#define STM32F746_PF6_FUNC_SAI1_SD_B 0x5607
768#define STM32F746_PF6_FUNC_UART7_RX 0x5609
769#define STM32F746_PF6_FUNC_QUADSPI_BK1_IO3 0x560a
770#define STM32F746_PF6_FUNC_EVENTOUT 0x5610
771#define STM32F746_PF6_FUNC_ANALOG 0x5611
772
773#define STM32F746_PF7_FUNC_GPIO 0x5700
774#define STM32F746_PF7_FUNC_TIM11_CH1 0x5704
775#define STM32F746_PF7_FUNC_SPI5_SCK 0x5706
776#define STM32F746_PF7_FUNC_SAI1_MCLK_B 0x5707
777#define STM32F746_PF7_FUNC_UART7_TX 0x5709
778#define STM32F746_PF7_FUNC_QUADSPI_BK1_IO2 0x570a
779#define STM32F746_PF7_FUNC_EVENTOUT 0x5710
780#define STM32F746_PF7_FUNC_ANALOG 0x5711
781
782#define STM32F746_PF8_FUNC_GPIO 0x5800
783#define STM32F746_PF8_FUNC_SPI5_MISO 0x5806
784#define STM32F746_PF8_FUNC_SAI1_SCK_B 0x5807
785#define STM32F746_PF8_FUNC_UART7_RTS 0x5809
786#define STM32F746_PF8_FUNC_TIM13_CH1 0x580a
787#define STM32F746_PF8_FUNC_QUADSPI_BK1_IO0 0x580b
788#define STM32F746_PF8_FUNC_EVENTOUT 0x5810
789#define STM32F746_PF8_FUNC_ANALOG 0x5811
790
791#define STM32F746_PF9_FUNC_GPIO 0x5900
792#define STM32F746_PF9_FUNC_SPI5_MOSI 0x5906
793#define STM32F746_PF9_FUNC_SAI1_FS_B 0x5907
794#define STM32F746_PF9_FUNC_UART7_CTS 0x5909
795#define STM32F746_PF9_FUNC_TIM14_CH1 0x590a
796#define STM32F746_PF9_FUNC_QUADSPI_BK1_IO1 0x590b
797#define STM32F746_PF9_FUNC_EVENTOUT 0x5910
798#define STM32F746_PF9_FUNC_ANALOG 0x5911
799
800#define STM32F746_PF10_FUNC_GPIO 0x5a00
801#define STM32F746_PF10_FUNC_DCMI_D11 0x5a0e
802#define STM32F746_PF10_FUNC_LCD_DE 0x5a0f
803#define STM32F746_PF10_FUNC_EVENTOUT 0x5a10
804#define STM32F746_PF10_FUNC_ANALOG 0x5a11
805
806#define STM32F746_PF11_FUNC_GPIO 0x5b00
807#define STM32F746_PF11_FUNC_SPI5_MOSI 0x5b06
808#define STM32F746_PF11_FUNC_SAI2_SD_B 0x5b0b
809#define STM32F746_PF11_FUNC_FMC_SDNRAS 0x5b0d
810#define STM32F746_PF11_FUNC_DCMI_D12 0x5b0e
811#define STM32F746_PF11_FUNC_EVENTOUT 0x5b10
812#define STM32F746_PF11_FUNC_ANALOG 0x5b11
813
814#define STM32F746_PF12_FUNC_GPIO 0x5c00
815#define STM32F746_PF12_FUNC_FMC_A6 0x5c0d
816#define STM32F746_PF12_FUNC_EVENTOUT 0x5c10
817#define STM32F746_PF12_FUNC_ANALOG 0x5c11
818
819#define STM32F746_PF13_FUNC_GPIO 0x5d00
820#define STM32F746_PF13_FUNC_I2C4_SMBA 0x5d05
821#define STM32F746_PF13_FUNC_FMC_A7 0x5d0d
822#define STM32F746_PF13_FUNC_EVENTOUT 0x5d10
823#define STM32F746_PF13_FUNC_ANALOG 0x5d11
824
825#define STM32F746_PF14_FUNC_GPIO 0x5e00
826#define STM32F746_PF14_FUNC_I2C4_SCL 0x5e05
827#define STM32F746_PF14_FUNC_FMC_A8 0x5e0d
828#define STM32F746_PF14_FUNC_EVENTOUT 0x5e10
829#define STM32F746_PF14_FUNC_ANALOG 0x5e11
830
831#define STM32F746_PF15_FUNC_GPIO 0x5f00
832#define STM32F746_PF15_FUNC_I2C4_SDA 0x5f05
833#define STM32F746_PF15_FUNC_FMC_A9 0x5f0d
834#define STM32F746_PF15_FUNC_EVENTOUT 0x5f10
835#define STM32F746_PF15_FUNC_ANALOG 0x5f11
836
837
838#define STM32F746_PG0_FUNC_GPIO 0x6000
839#define STM32F746_PG0_FUNC_FMC_A10 0x600d
840#define STM32F746_PG0_FUNC_EVENTOUT 0x6010
841#define STM32F746_PG0_FUNC_ANALOG 0x6011
842
843#define STM32F746_PG1_FUNC_GPIO 0x6100
844#define STM32F746_PG1_FUNC_FMC_A11 0x610d
845#define STM32F746_PG1_FUNC_EVENTOUT 0x6110
846#define STM32F746_PG1_FUNC_ANALOG 0x6111
847
848#define STM32F746_PG2_FUNC_GPIO 0x6200
849#define STM32F746_PG2_FUNC_FMC_A12 0x620d
850#define STM32F746_PG2_FUNC_EVENTOUT 0x6210
851#define STM32F746_PG2_FUNC_ANALOG 0x6211
852
853#define STM32F746_PG3_FUNC_GPIO 0x6300
854#define STM32F746_PG3_FUNC_FMC_A13 0x630d
855#define STM32F746_PG3_FUNC_EVENTOUT 0x6310
856#define STM32F746_PG3_FUNC_ANALOG 0x6311
857
858#define STM32F746_PG4_FUNC_GPIO 0x6400
859#define STM32F746_PG4_FUNC_FMC_A14_FMC_BA0 0x640d
860#define STM32F746_PG4_FUNC_EVENTOUT 0x6410
861#define STM32F746_PG4_FUNC_ANALOG 0x6411
862
863#define STM32F746_PG5_FUNC_GPIO 0x6500
864#define STM32F746_PG5_FUNC_FMC_A15_FMC_BA1 0x650d
865#define STM32F746_PG5_FUNC_EVENTOUT 0x6510
866#define STM32F746_PG5_FUNC_ANALOG 0x6511
867
868#define STM32F746_PG6_FUNC_GPIO 0x6600
869#define STM32F746_PG6_FUNC_DCMI_D12 0x660e
870#define STM32F746_PG6_FUNC_LCD_R7 0x660f
871#define STM32F746_PG6_FUNC_EVENTOUT 0x6610
872#define STM32F746_PG6_FUNC_ANALOG 0x6611
873
874#define STM32F746_PG7_FUNC_GPIO 0x6700
875#define STM32F746_PG7_FUNC_USART6_CK 0x6709
876#define STM32F746_PG7_FUNC_FMC_INT 0x670d
877#define STM32F746_PG7_FUNC_DCMI_D13 0x670e
878#define STM32F746_PG7_FUNC_LCD_CLK 0x670f
879#define STM32F746_PG7_FUNC_EVENTOUT 0x6710
880#define STM32F746_PG7_FUNC_ANALOG 0x6711
881
882#define STM32F746_PG8_FUNC_GPIO 0x6800
883#define STM32F746_PG8_FUNC_SPI6_NSS 0x6806
884#define STM32F746_PG8_FUNC_SPDIFRX_IN2 0x6808
885#define STM32F746_PG8_FUNC_USART6_RTS 0x6809
886#define STM32F746_PG8_FUNC_ETH_PPS_OUT 0x680c
887#define STM32F746_PG8_FUNC_FMC_SDCLK 0x680d
888#define STM32F746_PG8_FUNC_EVENTOUT 0x6810
889#define STM32F746_PG8_FUNC_ANALOG 0x6811
890
891#define STM32F746_PG9_FUNC_GPIO 0x6900
892#define STM32F746_PG9_FUNC_SPDIFRX_IN3 0x6908
893#define STM32F746_PG9_FUNC_USART6_RX 0x6909
894#define STM32F746_PG9_FUNC_QUADSPI_BK2_IO2 0x690a
895#define STM32F746_PG9_FUNC_SAI2_FS_B 0x690b
896#define STM32F746_PG9_FUNC_FMC_NE2_FMC_NCE 0x690d
897#define STM32F746_PG9_FUNC_DCMI_VSYNC 0x690e
898#define STM32F746_PG9_FUNC_EVENTOUT 0x6910
899#define STM32F746_PG9_FUNC_ANALOG 0x6911
900
901#define STM32F746_PG10_FUNC_GPIO 0x6a00
902#define STM32F746_PG10_FUNC_LCD_G3 0x6a0a
903#define STM32F746_PG10_FUNC_SAI2_SD_B 0x6a0b
904#define STM32F746_PG10_FUNC_FMC_NE3 0x6a0d
905#define STM32F746_PG10_FUNC_DCMI_D2 0x6a0e
906#define STM32F746_PG10_FUNC_LCD_B2 0x6a0f
907#define STM32F746_PG10_FUNC_EVENTOUT 0x6a10
908#define STM32F746_PG10_FUNC_ANALOG 0x6a11
909
910#define STM32F746_PG11_FUNC_GPIO 0x6b00
911#define STM32F746_PG11_FUNC_SPDIFRX_IN0 0x6b08
912#define STM32F746_PG11_FUNC_ETH_MII_TX_EN_ETH_RMII_TX_EN 0x6b0c
913#define STM32F746_PG11_FUNC_DCMI_D3 0x6b0e
914#define STM32F746_PG11_FUNC_LCD_B3 0x6b0f
915#define STM32F746_PG11_FUNC_EVENTOUT 0x6b10
916#define STM32F746_PG11_FUNC_ANALOG 0x6b11
917
918#define STM32F746_PG12_FUNC_GPIO 0x6c00
919#define STM32F746_PG12_FUNC_LPTIM1_IN1 0x6c04
920#define STM32F746_PG12_FUNC_SPI6_MISO 0x6c06
921#define STM32F746_PG12_FUNC_SPDIFRX_IN1 0x6c08
922#define STM32F746_PG12_FUNC_USART6_RTS 0x6c09
923#define STM32F746_PG12_FUNC_LCD_B4 0x6c0a
924#define STM32F746_PG12_FUNC_FMC_NE4 0x6c0d
925#define STM32F746_PG12_FUNC_LCD_B1 0x6c0f
926#define STM32F746_PG12_FUNC_EVENTOUT 0x6c10
927#define STM32F746_PG12_FUNC_ANALOG 0x6c11
928
929#define STM32F746_PG13_FUNC_GPIO 0x6d00
930#define STM32F746_PG13_FUNC_TRACED0 0x6d01
931#define STM32F746_PG13_FUNC_LPTIM1_OUT 0x6d04
932#define STM32F746_PG13_FUNC_SPI6_SCK 0x6d06
933#define STM32F746_PG13_FUNC_USART6_CTS 0x6d09
934#define STM32F746_PG13_FUNC_ETH_MII_TXD0_ETH_RMII_TXD0 0x6d0c
935#define STM32F746_PG13_FUNC_FMC_A24 0x6d0d
936#define STM32F746_PG13_FUNC_LCD_R0 0x6d0f
937#define STM32F746_PG13_FUNC_EVENTOUT 0x6d10
938#define STM32F746_PG13_FUNC_ANALOG 0x6d11
939
940#define STM32F746_PG14_FUNC_GPIO 0x6e00
941#define STM32F746_PG14_FUNC_TRACED1 0x6e01
942#define STM32F746_PG14_FUNC_LPTIM1_ETR 0x6e04
943#define STM32F746_PG14_FUNC_SPI6_MOSI 0x6e06
944#define STM32F746_PG14_FUNC_USART6_TX 0x6e09
945#define STM32F746_PG14_FUNC_QUADSPI_BK2_IO3 0x6e0a
946#define STM32F746_PG14_FUNC_ETH_MII_TXD1_ETH_RMII_TXD1 0x6e0c
947#define STM32F746_PG14_FUNC_FMC_A25 0x6e0d
948#define STM32F746_PG14_FUNC_LCD_B0 0x6e0f
949#define STM32F746_PG14_FUNC_EVENTOUT 0x6e10
950#define STM32F746_PG14_FUNC_ANALOG 0x6e11
951
952#define STM32F746_PG15_FUNC_GPIO 0x6f00
953#define STM32F746_PG15_FUNC_USART6_CTS 0x6f09
954#define STM32F746_PG15_FUNC_FMC_SDNCAS 0x6f0d
955#define STM32F746_PG15_FUNC_DCMI_D13 0x6f0e
956#define STM32F746_PG15_FUNC_EVENTOUT 0x6f10
957#define STM32F746_PG15_FUNC_ANALOG 0x6f11
958
959
960#define STM32F746_PH0_FUNC_GPIO 0x7000
961#define STM32F746_PH0_FUNC_EVENTOUT 0x7010
962#define STM32F746_PH0_FUNC_ANALOG 0x7011
963
964#define STM32F746_PH1_FUNC_GPIO 0x7100
965#define STM32F746_PH1_FUNC_EVENTOUT 0x7110
966#define STM32F746_PH1_FUNC_ANALOG 0x7111
967
968#define STM32F746_PH2_FUNC_GPIO 0x7200
969#define STM32F746_PH2_FUNC_LPTIM1_IN2 0x7204
970#define STM32F746_PH2_FUNC_QUADSPI_BK2_IO0 0x720a
971#define STM32F746_PH2_FUNC_SAI2_SCK_B 0x720b
972#define STM32F746_PH2_FUNC_ETH_MII_CRS 0x720c
973#define STM32F746_PH2_FUNC_FMC_SDCKE0 0x720d
974#define STM32F746_PH2_FUNC_LCD_R0 0x720f
975#define STM32F746_PH2_FUNC_EVENTOUT 0x7210
976#define STM32F746_PH2_FUNC_ANALOG 0x7211
977
978#define STM32F746_PH3_FUNC_GPIO 0x7300
979#define STM32F746_PH3_FUNC_QUADSPI_BK2_IO1 0x730a
980#define STM32F746_PH3_FUNC_SAI2_MCLK_B 0x730b
981#define STM32F746_PH3_FUNC_ETH_MII_COL 0x730c
982#define STM32F746_PH3_FUNC_FMC_SDNE0 0x730d
983#define STM32F746_PH3_FUNC_LCD_R1 0x730f
984#define STM32F746_PH3_FUNC_EVENTOUT 0x7310
985#define STM32F746_PH3_FUNC_ANALOG 0x7311
986
987#define STM32F746_PH4_FUNC_GPIO 0x7400
988#define STM32F746_PH4_FUNC_I2C2_SCL 0x7405
989#define STM32F746_PH4_FUNC_OTG_HS_ULPI_NXT 0x740b
990#define STM32F746_PH4_FUNC_EVENTOUT 0x7410
991#define STM32F746_PH4_FUNC_ANALOG 0x7411
992
993#define STM32F746_PH5_FUNC_GPIO 0x7500
994#define STM32F746_PH5_FUNC_I2C2_SDA 0x7505
995#define STM32F746_PH5_FUNC_SPI5_NSS 0x7506
996#define STM32F746_PH5_FUNC_FMC_SDNWE 0x750d
997#define STM32F746_PH5_FUNC_EVENTOUT 0x7510
998#define STM32F746_PH5_FUNC_ANALOG 0x7511
999
1000#define STM32F746_PH6_FUNC_GPIO 0x7600
1001#define STM32F746_PH6_FUNC_I2C2_SMBA 0x7605
1002#define STM32F746_PH6_FUNC_SPI5_SCK 0x7606
1003#define STM32F746_PH6_FUNC_TIM12_CH1 0x760a
1004#define STM32F746_PH6_FUNC_ETH_MII_RXD2 0x760c
1005#define STM32F746_PH6_FUNC_FMC_SDNE1 0x760d
1006#define STM32F746_PH6_FUNC_DCMI_D8 0x760e
1007#define STM32F746_PH6_FUNC_EVENTOUT 0x7610
1008#define STM32F746_PH6_FUNC_ANALOG 0x7611
1009
1010#define STM32F746_PH7_FUNC_GPIO 0x7700
1011#define STM32F746_PH7_FUNC_I2C3_SCL 0x7705
1012#define STM32F746_PH7_FUNC_SPI5_MISO 0x7706
1013#define STM32F746_PH7_FUNC_ETH_MII_RXD3 0x770c
1014#define STM32F746_PH7_FUNC_FMC_SDCKE1 0x770d
1015#define STM32F746_PH7_FUNC_DCMI_D9 0x770e
1016#define STM32F746_PH7_FUNC_EVENTOUT 0x7710
1017#define STM32F746_PH7_FUNC_ANALOG 0x7711
1018
1019#define STM32F746_PH8_FUNC_GPIO 0x7800
1020#define STM32F746_PH8_FUNC_I2C3_SDA 0x7805
1021#define STM32F746_PH8_FUNC_FMC_D16 0x780d
1022#define STM32F746_PH8_FUNC_DCMI_HSYNC 0x780e
1023#define STM32F746_PH8_FUNC_LCD_R2 0x780f
1024#define STM32F746_PH8_FUNC_EVENTOUT 0x7810
1025#define STM32F746_PH8_FUNC_ANALOG 0x7811
1026
1027#define STM32F746_PH9_FUNC_GPIO 0x7900
1028#define STM32F746_PH9_FUNC_I2C3_SMBA 0x7905
1029#define STM32F746_PH9_FUNC_TIM12_CH2 0x790a
1030#define STM32F746_PH9_FUNC_FMC_D17 0x790d
1031#define STM32F746_PH9_FUNC_DCMI_D0 0x790e
1032#define STM32F746_PH9_FUNC_LCD_R3 0x790f
1033#define STM32F746_PH9_FUNC_EVENTOUT 0x7910
1034#define STM32F746_PH9_FUNC_ANALOG 0x7911
1035
1036#define STM32F746_PH10_FUNC_GPIO 0x7a00
1037#define STM32F746_PH10_FUNC_TIM5_CH1 0x7a03
1038#define STM32F746_PH10_FUNC_I2C4_SMBA 0x7a05
1039#define STM32F746_PH10_FUNC_FMC_D18 0x7a0d
1040#define STM32F746_PH10_FUNC_DCMI_D1 0x7a0e
1041#define STM32F746_PH10_FUNC_LCD_R4 0x7a0f
1042#define STM32F746_PH10_FUNC_EVENTOUT 0x7a10
1043#define STM32F746_PH10_FUNC_ANALOG 0x7a11
1044
1045#define STM32F746_PH11_FUNC_GPIO 0x7b00
1046#define STM32F746_PH11_FUNC_TIM5_CH2 0x7b03
1047#define STM32F746_PH11_FUNC_I2C4_SCL 0x7b05
1048#define STM32F746_PH11_FUNC_FMC_D19 0x7b0d
1049#define STM32F746_PH11_FUNC_DCMI_D2 0x7b0e
1050#define STM32F746_PH11_FUNC_LCD_R5 0x7b0f
1051#define STM32F746_PH11_FUNC_EVENTOUT 0x7b10
1052#define STM32F746_PH11_FUNC_ANALOG 0x7b11
1053
1054#define STM32F746_PH12_FUNC_GPIO 0x7c00
1055#define STM32F746_PH12_FUNC_TIM5_CH3 0x7c03
1056#define STM32F746_PH12_FUNC_I2C4_SDA 0x7c05
1057#define STM32F746_PH12_FUNC_FMC_D20 0x7c0d
1058#define STM32F746_PH12_FUNC_DCMI_D3 0x7c0e
1059#define STM32F746_PH12_FUNC_LCD_R6 0x7c0f
1060#define STM32F746_PH12_FUNC_EVENTOUT 0x7c10
1061#define STM32F746_PH12_FUNC_ANALOG 0x7c11
1062
1063#define STM32F746_PH13_FUNC_GPIO 0x7d00
1064#define STM32F746_PH13_FUNC_TIM8_CH1N 0x7d04
1065#define STM32F746_PH13_FUNC_CAN1_TX 0x7d0a
1066#define STM32F746_PH13_FUNC_FMC_D21 0x7d0d
1067#define STM32F746_PH13_FUNC_LCD_G2 0x7d0f
1068#define STM32F746_PH13_FUNC_EVENTOUT 0x7d10
1069#define STM32F746_PH13_FUNC_ANALOG 0x7d11
1070
1071#define STM32F746_PH14_FUNC_GPIO 0x7e00
1072#define STM32F746_PH14_FUNC_TIM8_CH2N 0x7e04
1073#define STM32F746_PH14_FUNC_FMC_D22 0x7e0d
1074#define STM32F746_PH14_FUNC_DCMI_D4 0x7e0e
1075#define STM32F746_PH14_FUNC_LCD_G3 0x7e0f
1076#define STM32F746_PH14_FUNC_EVENTOUT 0x7e10
1077#define STM32F746_PH14_FUNC_ANALOG 0x7e11
1078
1079#define STM32F746_PH15_FUNC_GPIO 0x7f00
1080#define STM32F746_PH15_FUNC_TIM8_CH3N 0x7f04
1081#define STM32F746_PH15_FUNC_FMC_D23 0x7f0d
1082#define STM32F746_PH15_FUNC_DCMI_D11 0x7f0e
1083#define STM32F746_PH15_FUNC_LCD_G4 0x7f0f
1084#define STM32F746_PH15_FUNC_EVENTOUT 0x7f10
1085#define STM32F746_PH15_FUNC_ANALOG 0x7f11
1086
1087
1088#define STM32F746_PI0_FUNC_GPIO 0x8000
1089#define STM32F746_PI0_FUNC_TIM5_CH4 0x8003
1090#define STM32F746_PI0_FUNC_SPI2_NSS_I2S2_WS 0x8006
1091#define STM32F746_PI0_FUNC_FMC_D24 0x800d
1092#define STM32F746_PI0_FUNC_DCMI_D13 0x800e
1093#define STM32F746_PI0_FUNC_LCD_G5 0x800f
1094#define STM32F746_PI0_FUNC_EVENTOUT 0x8010
1095#define STM32F746_PI0_FUNC_ANALOG 0x8011
1096
1097#define STM32F746_PI1_FUNC_GPIO 0x8100
1098#define STM32F746_PI1_FUNC_TIM8_BKIN2 0x8104
1099#define STM32F746_PI1_FUNC_SPI2_SCK_I2S2_CK 0x8106
1100#define STM32F746_PI1_FUNC_FMC_D25 0x810d
1101#define STM32F746_PI1_FUNC_DCMI_D8 0x810e
1102#define STM32F746_PI1_FUNC_LCD_G6 0x810f
1103#define STM32F746_PI1_FUNC_EVENTOUT 0x8110
1104#define STM32F746_PI1_FUNC_ANALOG 0x8111
1105
1106#define STM32F746_PI2_FUNC_GPIO 0x8200
1107#define STM32F746_PI2_FUNC_TIM8_CH4 0x8204
1108#define STM32F746_PI2_FUNC_SPI2_MISO 0x8206
1109#define STM32F746_PI2_FUNC_FMC_D26 0x820d
1110#define STM32F746_PI2_FUNC_DCMI_D9 0x820e
1111#define STM32F746_PI2_FUNC_LCD_G7 0x820f
1112#define STM32F746_PI2_FUNC_EVENTOUT 0x8210
1113#define STM32F746_PI2_FUNC_ANALOG 0x8211
1114
1115#define STM32F746_PI3_FUNC_GPIO 0x8300
1116#define STM32F746_PI3_FUNC_TIM8_ETR 0x8304
1117#define STM32F746_PI3_FUNC_SPI2_MOSI_I2S2_SD 0x8306
1118#define STM32F746_PI3_FUNC_FMC_D27 0x830d
1119#define STM32F746_PI3_FUNC_DCMI_D10 0x830e
1120#define STM32F746_PI3_FUNC_EVENTOUT 0x8310
1121#define STM32F746_PI3_FUNC_ANALOG 0x8311
1122
1123#define STM32F746_PI4_FUNC_GPIO 0x8400
1124#define STM32F746_PI4_FUNC_TIM8_BKIN 0x8404
1125#define STM32F746_PI4_FUNC_SAI2_MCLK_A 0x840b
1126#define STM32F746_PI4_FUNC_FMC_NBL2 0x840d
1127#define STM32F746_PI4_FUNC_DCMI_D5 0x840e
1128#define STM32F746_PI4_FUNC_LCD_B4 0x840f
1129#define STM32F746_PI4_FUNC_EVENTOUT 0x8410
1130#define STM32F746_PI4_FUNC_ANALOG 0x8411
1131
1132#define STM32F746_PI5_FUNC_GPIO 0x8500
1133#define STM32F746_PI5_FUNC_TIM8_CH1 0x8504
1134#define STM32F746_PI5_FUNC_SAI2_SCK_A 0x850b
1135#define STM32F746_PI5_FUNC_FMC_NBL3 0x850d
1136#define STM32F746_PI5_FUNC_DCMI_VSYNC 0x850e
1137#define STM32F746_PI5_FUNC_LCD_B5 0x850f
1138#define STM32F746_PI5_FUNC_EVENTOUT 0x8510
1139#define STM32F746_PI5_FUNC_ANALOG 0x8511
1140
1141#define STM32F746_PI6_FUNC_GPIO 0x8600
1142#define STM32F746_PI6_FUNC_TIM8_CH2 0x8604
1143#define STM32F746_PI6_FUNC_SAI2_SD_A 0x860b
1144#define STM32F746_PI6_FUNC_FMC_D28 0x860d
1145#define STM32F746_PI6_FUNC_DCMI_D6 0x860e
1146#define STM32F746_PI6_FUNC_LCD_B6 0x860f
1147#define STM32F746_PI6_FUNC_EVENTOUT 0x8610
1148#define STM32F746_PI6_FUNC_ANALOG 0x8611
1149
1150#define STM32F746_PI7_FUNC_GPIO 0x8700
1151#define STM32F746_PI7_FUNC_TIM8_CH3 0x8704
1152#define STM32F746_PI7_FUNC_SAI2_FS_A 0x870b
1153#define STM32F746_PI7_FUNC_FMC_D29 0x870d
1154#define STM32F746_PI7_FUNC_DCMI_D7 0x870e
1155#define STM32F746_PI7_FUNC_LCD_B7 0x870f
1156#define STM32F746_PI7_FUNC_EVENTOUT 0x8710
1157#define STM32F746_PI7_FUNC_ANALOG 0x8711
1158
1159#define STM32F746_PI8_FUNC_GPIO 0x8800
1160#define STM32F746_PI8_FUNC_EVENTOUT 0x8810
1161#define STM32F746_PI8_FUNC_ANALOG 0x8811
1162
1163#define STM32F746_PI9_FUNC_GPIO 0x8900
1164#define STM32F746_PI9_FUNC_CAN1_RX 0x890a
1165#define STM32F746_PI9_FUNC_FMC_D30 0x890d
1166#define STM32F746_PI9_FUNC_LCD_VSYNC 0x890f
1167#define STM32F746_PI9_FUNC_EVENTOUT 0x8910
1168#define STM32F746_PI9_FUNC_ANALOG 0x8911
1169
1170#define STM32F746_PI10_FUNC_GPIO 0x8a00
1171#define STM32F746_PI10_FUNC_ETH_MII_RX_ER 0x8a0c
1172#define STM32F746_PI10_FUNC_FMC_D31 0x8a0d
1173#define STM32F746_PI10_FUNC_LCD_HSYNC 0x8a0f
1174#define STM32F746_PI10_FUNC_EVENTOUT 0x8a10
1175#define STM32F746_PI10_FUNC_ANALOG 0x8a11
1176
1177#define STM32F746_PI11_FUNC_GPIO 0x8b00
1178#define STM32F746_PI11_FUNC_OTG_HS_ULPI_DIR 0x8b0b
1179#define STM32F746_PI11_FUNC_EVENTOUT 0x8b10
1180#define STM32F746_PI11_FUNC_ANALOG 0x8b11
1181
1182#define STM32F746_PI12_FUNC_GPIO 0x8c00
1183#define STM32F746_PI12_FUNC_LCD_HSYNC 0x8c0f
1184#define STM32F746_PI12_FUNC_EVENTOUT 0x8c10
1185#define STM32F746_PI12_FUNC_ANALOG 0x8c11
1186
1187#define STM32F746_PI13_FUNC_GPIO 0x8d00
1188#define STM32F746_PI13_FUNC_LCD_VSYNC 0x8d0f
1189#define STM32F746_PI13_FUNC_EVENTOUT 0x8d10
1190#define STM32F746_PI13_FUNC_ANALOG 0x8d11
1191
1192#define STM32F746_PI14_FUNC_GPIO 0x8e00
1193#define STM32F746_PI14_FUNC_LCD_CLK 0x8e0f
1194#define STM32F746_PI14_FUNC_EVENTOUT 0x8e10
1195#define STM32F746_PI14_FUNC_ANALOG 0x8e11
1196
1197#define STM32F746_PI15_FUNC_GPIO 0x8f00
1198#define STM32F746_PI15_FUNC_LCD_R0 0x8f0f
1199#define STM32F746_PI15_FUNC_EVENTOUT 0x8f10
1200#define STM32F746_PI15_FUNC_ANALOG 0x8f11
1201
1202
1203#define STM32F746_PJ0_FUNC_GPIO 0x9000
1204#define STM32F746_PJ0_FUNC_LCD_R1 0x900f
1205#define STM32F746_PJ0_FUNC_EVENTOUT 0x9010
1206#define STM32F746_PJ0_FUNC_ANALOG 0x9011
1207
1208#define STM32F746_PJ1_FUNC_GPIO 0x9100
1209#define STM32F746_PJ1_FUNC_LCD_R2 0x910f
1210#define STM32F746_PJ1_FUNC_EVENTOUT 0x9110
1211#define STM32F746_PJ1_FUNC_ANALOG 0x9111
1212
1213#define STM32F746_PJ2_FUNC_GPIO 0x9200
1214#define STM32F746_PJ2_FUNC_LCD_R3 0x920f
1215#define STM32F746_PJ2_FUNC_EVENTOUT 0x9210
1216#define STM32F746_PJ2_FUNC_ANALOG 0x9211
1217
1218#define STM32F746_PJ3_FUNC_GPIO 0x9300
1219#define STM32F746_PJ3_FUNC_LCD_R4 0x930f
1220#define STM32F746_PJ3_FUNC_EVENTOUT 0x9310
1221#define STM32F746_PJ3_FUNC_ANALOG 0x9311
1222
1223#define STM32F746_PJ4_FUNC_GPIO 0x9400
1224#define STM32F746_PJ4_FUNC_LCD_R5 0x940f
1225#define STM32F746_PJ4_FUNC_EVENTOUT 0x9410
1226#define STM32F746_PJ4_FUNC_ANALOG 0x9411
1227
1228#define STM32F746_PJ5_FUNC_GPIO 0x9500
1229#define STM32F746_PJ5_FUNC_LCD_R6 0x950f
1230#define STM32F746_PJ5_FUNC_EVENTOUT 0x9510
1231#define STM32F746_PJ5_FUNC_ANALOG 0x9511
1232
1233#define STM32F746_PJ6_FUNC_GPIO 0x9600
1234#define STM32F746_PJ6_FUNC_LCD_R7 0x960f
1235#define STM32F746_PJ6_FUNC_EVENTOUT 0x9610
1236#define STM32F746_PJ6_FUNC_ANALOG 0x9611
1237
1238#define STM32F746_PJ7_FUNC_GPIO 0x9700
1239#define STM32F746_PJ7_FUNC_LCD_G0 0x970f
1240#define STM32F746_PJ7_FUNC_EVENTOUT 0x9710
1241#define STM32F746_PJ7_FUNC_ANALOG 0x9711
1242
1243#define STM32F746_PJ8_FUNC_GPIO 0x9800
1244#define STM32F746_PJ8_FUNC_LCD_G1 0x980f
1245#define STM32F746_PJ8_FUNC_EVENTOUT 0x9810
1246#define STM32F746_PJ8_FUNC_ANALOG 0x9811
1247
1248#define STM32F746_PJ9_FUNC_GPIO 0x9900
1249#define STM32F746_PJ9_FUNC_LCD_G2 0x990f
1250#define STM32F746_PJ9_FUNC_EVENTOUT 0x9910
1251#define STM32F746_PJ9_FUNC_ANALOG 0x9911
1252
1253#define STM32F746_PJ10_FUNC_GPIO 0x9a00
1254#define STM32F746_PJ10_FUNC_LCD_G3 0x9a0f
1255#define STM32F746_PJ10_FUNC_EVENTOUT 0x9a10
1256#define STM32F746_PJ10_FUNC_ANALOG 0x9a11
1257
1258#define STM32F746_PJ11_FUNC_GPIO 0x9b00
1259#define STM32F746_PJ11_FUNC_LCD_G4 0x9b0f
1260#define STM32F746_PJ11_FUNC_EVENTOUT 0x9b10
1261#define STM32F746_PJ11_FUNC_ANALOG 0x9b11
1262
1263#define STM32F746_PJ12_FUNC_GPIO 0x9c00
1264#define STM32F746_PJ12_FUNC_LCD_B0 0x9c0f
1265#define STM32F746_PJ12_FUNC_EVENTOUT 0x9c10
1266#define STM32F746_PJ12_FUNC_ANALOG 0x9c11
1267
1268#define STM32F746_PJ13_FUNC_GPIO 0x9d00
1269#define STM32F746_PJ13_FUNC_LCD_B1 0x9d0f
1270#define STM32F746_PJ13_FUNC_EVENTOUT 0x9d10
1271#define STM32F746_PJ13_FUNC_ANALOG 0x9d11
1272
1273#define STM32F746_PJ14_FUNC_GPIO 0x9e00
1274#define STM32F746_PJ14_FUNC_LCD_B2 0x9e0f
1275#define STM32F746_PJ14_FUNC_EVENTOUT 0x9e10
1276#define STM32F746_PJ14_FUNC_ANALOG 0x9e11
1277
1278#define STM32F746_PJ15_FUNC_GPIO 0x9f00
1279#define STM32F746_PJ15_FUNC_LCD_B3 0x9f0f
1280#define STM32F746_PJ15_FUNC_EVENTOUT 0x9f10
1281#define STM32F746_PJ15_FUNC_ANALOG 0x9f11
1282
1283
1284#define STM32F746_PK0_FUNC_GPIO 0xa000
1285#define STM32F746_PK0_FUNC_LCD_G5 0xa00f
1286#define STM32F746_PK0_FUNC_EVENTOUT 0xa010
1287#define STM32F746_PK0_FUNC_ANALOG 0xa011
1288
1289#define STM32F746_PK1_FUNC_GPIO 0xa100
1290#define STM32F746_PK1_FUNC_LCD_G6 0xa10f
1291#define STM32F746_PK1_FUNC_EVENTOUT 0xa110
1292#define STM32F746_PK1_FUNC_ANALOG 0xa111
1293
1294#define STM32F746_PK2_FUNC_GPIO 0xa200
1295#define STM32F746_PK2_FUNC_LCD_G7 0xa20f
1296#define STM32F746_PK2_FUNC_EVENTOUT 0xa210
1297#define STM32F746_PK2_FUNC_ANALOG 0xa211
1298
1299#define STM32F746_PK3_FUNC_GPIO 0xa300
1300#define STM32F746_PK3_FUNC_LCD_B4 0xa30f
1301#define STM32F746_PK3_FUNC_EVENTOUT 0xa310
1302#define STM32F746_PK3_FUNC_ANALOG 0xa311
1303
1304#define STM32F746_PK4_FUNC_GPIO 0xa400
1305#define STM32F746_PK4_FUNC_LCD_B5 0xa40f
1306#define STM32F746_PK4_FUNC_EVENTOUT 0xa410
1307#define STM32F746_PK4_FUNC_ANALOG 0xa411
1308
1309#define STM32F746_PK5_FUNC_GPIO 0xa500
1310#define STM32F746_PK5_FUNC_LCD_B6 0xa50f
1311#define STM32F746_PK5_FUNC_EVENTOUT 0xa510
1312#define STM32F746_PK5_FUNC_ANALOG 0xa511
1313
1314#define STM32F746_PK6_FUNC_GPIO 0xa600
1315#define STM32F746_PK6_FUNC_LCD_B7 0xa60f
1316#define STM32F746_PK6_FUNC_EVENTOUT 0xa610
1317#define STM32F746_PK6_FUNC_ANALOG 0xa611
1318
1319#define STM32F746_PK7_FUNC_GPIO 0xa700
1320#define STM32F746_PK7_FUNC_LCD_DE 0xa70f
1321#define STM32F746_PK7_FUNC_EVENTOUT 0xa710
1322#define STM32F746_PK7_FUNC_ANALOG 0xa711
1323
1324#endif /* _DT_BINDINGS_STM32F746_PINFUNC_H */
diff --git a/include/linux/pinctrl/pinconf-generic.h b/include/linux/pinctrl/pinconf-generic.h
index d921afd5f109..12343caa114e 100644
--- a/include/linux/pinctrl/pinconf-generic.h
+++ b/include/linux/pinctrl/pinconf-generic.h
@@ -175,6 +175,8 @@ int pinconf_generic_dt_subnode_to_map(struct pinctrl_dev *pctldev,
175int pinconf_generic_dt_node_to_map(struct pinctrl_dev *pctldev, 175int pinconf_generic_dt_node_to_map(struct pinctrl_dev *pctldev,
176 struct device_node *np_config, struct pinctrl_map **map, 176 struct device_node *np_config, struct pinctrl_map **map,
177 unsigned *num_maps, enum pinctrl_map_type type); 177 unsigned *num_maps, enum pinctrl_map_type type);
178void pinconf_generic_dt_free_map(struct pinctrl_dev *pctldev,
179 struct pinctrl_map *map, unsigned num_maps);
178 180
179static inline int pinconf_generic_dt_node_to_map_group( 181static inline int pinconf_generic_dt_node_to_map_group(
180 struct pinctrl_dev *pctldev, struct device_node *np_config, 182 struct pinctrl_dev *pctldev, struct device_node *np_config,