Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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
...

+12550 -2698
+47
Documentation/devicetree/bindings/gpio/gpio_oxnas.txt
··· 1 + * Oxford Semiconductor OXNAS SoC GPIO Controller 2 + 3 + Please refer to gpio.txt for generic information regarding GPIO bindings. 4 + 5 + Required 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 + 26 + Example: 27 + 28 + gpio0: 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 + 39 + keys { 40 + ... 41 + 42 + button-esc { 43 + label = "ESC"; 44 + linux,code = <1>; 45 + gpios = <&gpio0 12 0>; 46 + }; 47 + };
+16 -2
Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
··· 3 3 Required properties: 4 4 5 5 - compatible: 6 - Must be "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", 7 - "brcm,cygnus-crmu-gpio" or "brcm,iproc-gpio" 6 + "brcm,iproc-gpio" for the generic iProc based GPIO controller IP that 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 23 - reg: 10 24 Define the base and range of the I/O address space that contains SoC
+79
Documentation/devicetree/bindings/pinctrl/brcm,nsp-pinmux.txt
··· 1 + Broadcom NSP (Northstar plus) IOMUX Controller 2 + 3 + The NSP IOMUX controller supports group based mux configuration. In 4 + addition, certain pins can be muxed to GPIO function individually. 5 + 6 + Required 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 + 14 + Properties 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 + 21 + For more details, refer to 22 + Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt 23 + 24 + For 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 + 51 + List 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"
+57
Documentation/devicetree/bindings/pinctrl/oxnas,pinctrl.txt
··· 1 + * Oxford Semiconductor OXNAS SoC Family Pin Controller 2 + 3 + Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and 4 + ../interrupt-controller/interrupts.txt for generic information regarding 5 + pin controller, GPIO, and interrupt bindings. 6 + 7 + OXNAS 'pin configuration node' is a node of a group of pins which can be 8 + used for a specific device or function. This node represents configurations of 9 + pins, optional function, and optional mux related configuration. 10 + 11 + Required properties for pin controller node: 12 + - compatible: "oxsemi,ox810se-pinctrl" 13 + - oxsemi,sys-ctrl: a phandle to the system controller syscon node 14 + 15 + Required properties for pin configuration sub-nodes: 16 + - pins: List of pins to which the configuration applies. 17 + 18 + Optional properties for pin configuration sub-nodes: 19 + ---------------------------------------------------- 20 + - function: Mux function for the specified pins. 21 + - bias-pull-up: Enable weak pull-up. 22 + 23 + Example: 24 + 25 + pinctrl: 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 + 43 + uart2: 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 + };
+127
Documentation/devicetree/bindings/pinctrl/pinctrl-max77620.txt
··· 1 + Pincontrol driver for MAX77620 Power management IC from Maxim Semiconductor. 2 + 3 + Device has 8 GPIO pins which can be configured as GPIO as well as the 4 + special IO functions. 5 + 6 + Please refer file <devicetree/bindings/pinctrl/pinctrl-bindings.txt> 7 + for details of the common pinctrl bindings used by client devices, 8 + including the meaning of the phrase "pin configuration node". 9 + 10 + Optional Pinmux properties: 11 + -------------------------- 12 + Following properties are required if default setting of pins are required 13 + at 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 + 18 + The pin configurations are defined as child of the pinctrl states node. Each 19 + sub-node have following properties: 20 + 21 + Required properties: 22 + ------------------ 23 + - pins: List of pins. Valid values of pins properties are: 24 + gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7. 25 + 26 + Optional properties: 27 + ------------------- 28 + Following are optional properties defined as pinmux DT binding document 29 + <pinctrl-bindings.txt>. Absence of properties will leave the configuration 30 + on default. 31 + function, 32 + drive-push-pull, 33 + drive-open-drain, 34 + bias-pull-up, 35 + bias-pull-down. 36 + 37 + Valid values for function properties are: 38 + gpio, lpm-control-in, fps-out, 32k-out, sd0-dvs-in, sd1-dvs-in, 39 + reference-out 40 + 41 + Theres is also customised properties for the GPIO1, GPIO2 and GPIO3. These 42 + customised properties are required to configure FPS configuration parameters 43 + of these GPIOs. Please refer <devicetree/bindings/mfd/max77620.txt> for more 44 + detail 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 + 100 + Example: 101 + -------- 102 + #include <dt-bindings/mfd/max77620.h> 103 + ... 104 + max77620@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 + };
+152
Documentation/devicetree/bindings/pinctrl/qcom,mdm9615-pinctrl.txt
··· 1 + Qualcomm MDM9615 TLMM block 2 + 3 + This binding describes the Top Level Mode Multiplexer block found in the 4 + MDM9615 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 + 43 + Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for 44 + a general description of GPIO and interrupt bindings. 45 + 46 + Please refer to pinctrl-bindings.txt in this directory for details of the 47 + common pinctrl bindings used by client devices, including the meaning of the 48 + phrase "pin configuration node". 49 + 50 + The pin configuration nodes act as a container for an arbitrary number of 51 + subnodes. Each of these subnodes represents some desired configuration for a 52 + pin, a group, or a list of pins or groups. This configuration can include the 53 + mux function to select on those pin(s)/group(s), and various pin configuration 54 + parameters, such as pull-up, drive strength, etc. 55 + 56 + 57 + PIN CONFIGURATION NODES: 58 + 59 + The name of each subnode is not important; all subnodes should be enumerated 60 + and processed purely based on their content. 61 + 62 + Each subnode only affects those parameters that are explicitly listed. In 63 + other words, a subnode that lists a mux function but no pin configuration 64 + parameters implies no information about any pin configuration parameters. 65 + Similarly, a pin subnode that describes a pullup parameter implies no 66 + information about e.g. the mux function. 67 + 68 + 69 + The following generic properties as defined in pinctrl-bindings.txt are valid 70 + to 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 + 122 + Example: 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 + };
+1 -1
Documentation/devicetree/bindings/pinctrl/qcom,msm8660-pinctrl.txt
··· 52 52 gsbi2_spi_cs3_n, gsbi3, gsbi3_spi_cs1_n, gsbi3_spi_cs2_n, gsbi3_spi_cs3_n, 53 53 gsbi4, gsbi5, gsbi6, gsbi7, gsbi8, gsbi9, gsbi10, gsbi11, gsbi12, hdmi, i2s, 54 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 57 57 Example: 58 58
+4 -1
Documentation/devicetree/bindings/pinctrl/qcom,msm8974-pinctrl.txt
··· 49 49 sdc1_clk, sdc1_cmd, sdc1_data, sdc2_clk, sdc2_cmd, sdc2_data 50 50 Supports bias and drive-strength 51 51 52 + hsic_data, hsic_strobe 53 + Supports only mux 54 + 52 55 Valid values for function are: 53 56 cci_i2c0, cci_i2c1, uim1, uim2, uim_batt_alarm, 54 57 blsp_uim1, blsp_uart1, blsp_i2c1, blsp_spi1, ··· 73 70 cam_mckl0, cam_mclk1, cam_mclk2, cam_mclk3, mdp_vsync, hdmi_cec, hdmi_ddc, 74 71 hdmi_hpd, edp_hpd, gp_pdm0, gp_pdm1, gp_pdm2, gp_pdm3, gp0_clk, gp1_clk, 75 72 gp_mn, tsif1, tsif2, hsic, grfc, audio_ref_clk, qua_mi2s, pri_mi2s, spkr_mi2s, 76 - ter_mi2s, sec_mi2s, bt, fm, wlan, slimbus, gpio 73 + ter_mi2s, sec_mi2s, bt, fm, wlan, slimbus, hsic_ctl, gpio 77 74 78 75 (Note that this is not yet the complete list of functions) 79 76
+1
Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt
··· 9 9 Definition: Should contain one of: 10 10 "qcom,pm8018-mpp", 11 11 "qcom,pm8038-mpp", 12 + "qcom,pm8058-mpp", 12 13 "qcom,pm8821-mpp", 13 14 "qcom,pm8841-mpp", 14 15 "qcom,pm8916-mpp",
+1 -1
Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
··· 72 72 73 73 The pin configuration parameters use the generic pinconf bindings defined in 74 74 pinctrl-bindings.txt in this directory. The supported parameters are 75 - bias-disable, bias-pull-up, bias-pull-down, drive strength and power-source. For 75 + bias-disable, bias-pull-up, bias-pull-down, drive-strength and power-source. For 76 76 pins that have a configurable I/O voltage, the power-source value should be the 77 77 nominal I/O voltage in millivolts. 78 78
+1
Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.txt
··· 9 9 Required properies: 10 10 - compatible: value should be one of the following: 11 11 (a) "st,stm32f429-pinctrl" 12 + (b) "st,stm32f746-pinctrl" 12 13 - #address-cells: The value of this property must be 1 13 14 - #size-cells : The value of this property must be 1 14 15 - ranges : defines mapping between pin controller node (parent) to
+12 -12
Documentation/pinctrl.txt
··· 286 286 "drivers needing both pin control and GPIOs" below for details. But in some 287 287 situations a cross-subsystem mapping between pins and GPIOs is needed. 288 288 289 - Since the pin controller subsystem have its pinspace local to the pin 290 - controller we need a mapping so that the pin control subsystem can figure out 291 - which pin controller handles control of a certain GPIO pin. Since a single 292 - pin controller may be muxing several GPIO ranges (typically SoCs that have 293 - one set of pins, but internally several GPIO silicon blocks, each modelled as 294 - a struct gpio_chip) any number of GPIO ranges can be added to a pin controller 295 - instance like this: 289 + Since the pin controller subsystem has its pinspace local to the pin controller 290 + we need a mapping so that the pin control subsystem can figure out which pin 291 + controller handles control of a certain GPIO pin. Since a single pin controller 292 + may be muxing several GPIO ranges (typically SoCs that have one set of pins, 293 + but internally several GPIO silicon blocks, each modelled as a struct 294 + gpio_chip) any number of GPIO ranges can be added to a pin controller instance 295 + like this: 296 296 297 297 struct gpio_chip chip_a; 298 298 struct gpio_chip chip_b; ··· 493 493 - The combination of a FUNCTION and a PIN GROUP determine a certain function 494 494 for a certain set of pins. The knowledge of the functions and pin groups 495 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 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 - function 501 + - That a certain group in that list to be activated for a certain function 502 502 503 503 As already described above, pin groups are in turn self-descriptive, so 504 504 the core will retrieve the actual pin range in a certain group from the ··· 831 831 range dealing with pin config and pin multiplexing get placed into a 832 832 different memory range and a separate section of the data sheet. 833 833 834 - A flag "strict" in struct pinctrl_desc is available to check and deny 834 + A flag "strict" in struct pinmux_ops is available to check and deny 835 835 simultaneous access to the same pin from GPIO and pin multiplexing 836 836 consumers on hardware of this type. The pinctrl driver should set this flag 837 837 accordingly.
+24 -2
drivers/pinctrl/Kconfig
··· 35 35 machine and arch are selected to build. 36 36 37 37 config PINCTRL_AS3722 38 - bool "Pinctrl and GPIO driver for ams AS3722 PMIC" 38 + tristate "Pinctrl and GPIO driver for ams AS3722 PMIC" 39 39 depends on MFD_AS3722 && GPIOLIB 40 40 select PINMUX 41 41 select GENERIC_PINCONF ··· 129 129 select OF_GPIO 130 130 select REGMAP_MMIO 131 131 132 + config 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 + 132 143 config PINCTRL_ROCKCHIP 133 144 bool 134 145 select PINMUX ··· 207 196 COH 901 335 and COH 901 571/3. They contain 3, 5 or 7 208 197 ports of 8 GPIO pins each. 209 198 199 + config PINCTRL_MAX77620 200 + tristate "MAX77620/MAX20024 Pincontrol support" 201 + depends on MFD_MAX77620 202 + select PINMUX 203 + select GENERIC_PINCONF 204 + help 205 + Say Yes here to enable Pin control support for Maxim PMIC MAX77620. 206 + This PMIC has 8 GPIO pins that work as GPIO as well as special 207 + function in alternate mode. This driver also configure push-pull, 208 + open drain, FPS slots etc. 209 + 210 210 config PINCTRL_PALMAS 211 - bool "Pinctrl driver for the PALMAS Series MFD devices" 211 + tristate "Pinctrl driver for the PALMAS Series MFD devices" 212 212 depends on OF && MFD_PALMAS 213 213 select PINMUX 214 214 select GENERIC_PINCONF
+3 -1
drivers/pinctrl/Makefile
··· 16 16 obj-$(CONFIG_PINCTRL_AMD) += pinctrl-amd.o 17 17 obj-$(CONFIG_PINCTRL_DIGICOLOR) += pinctrl-digicolor.o 18 18 obj-$(CONFIG_PINCTRL_FALCON) += pinctrl-falcon.o 19 + obj-$(CONFIG_PINCTRL_MAX77620) += pinctrl-max77620.o 19 20 obj-$(CONFIG_PINCTRL_MESON) += meson/ 21 + obj-$(CONFIG_PINCTRL_OXNAS) += pinctrl-oxnas.o 20 22 obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o 21 23 obj-$(CONFIG_PINCTRL_PIC32) += pinctrl-pic32.o 22 24 obj-$(CONFIG_PINCTRL_PISTACHIO) += pinctrl-pistachio.o ··· 37 35 obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o 38 36 obj-$(CONFIG_PINCTRL_ZYNQ) += pinctrl-zynq.o 39 37 40 - obj-$(CONFIG_ARCH_BCM) += bcm/ 38 + obj-y += bcm/ 41 39 obj-$(CONFIG_PINCTRL_BERLIN) += berlin/ 42 40 obj-y += freescale/ 43 41 obj-$(CONFIG_X86) += intel/
+15
drivers/pinctrl/bcm/Kconfig
··· 60 60 config PINCTRL_CYGNUS_MUX 61 61 bool "Broadcom Cygnus IOMUX driver" 62 62 depends on (ARCH_BCM_CYGNUS || COMPILE_TEST) 63 + depends on OF 63 64 select PINMUX 64 65 select GENERIC_PINCONF 65 66 default ARCH_BCM_CYGNUS ··· 100 99 101 100 The Broadcom Northstar2 IOMUX driver supports group based IOMUX 102 101 configuration. 102 + 103 + config PINCTRL_NSP_MUX 104 + bool "Broadcom NSP IOMUX driver" 105 + depends on (ARCH_BCM_NSP || COMPILE_TEST) 106 + depends on OF 107 + select PINMUX 108 + select GENERIC_PINCONF 109 + default ARCH_BCM_NSP 110 + help 111 + Say yes here to enable the Broadcom NSP SOC IOMUX driver. 112 + 113 + The Broadcom Northstar Plus IOMUX driver supports pin based IOMUX 114 + configuration, with certain individual pins can be overridden 115 + to GPIO function.
+1
drivers/pinctrl/bcm/Makefile
··· 6 6 obj-$(CONFIG_PINCTRL_CYGNUS_MUX) += pinctrl-cygnus-mux.o 7 7 obj-$(CONFIG_PINCTRL_NSP_GPIO) += pinctrl-nsp-gpio.o 8 8 obj-$(CONFIG_PINCTRL_NS2_MUX) += pinctrl-ns2-mux.o 9 + obj-$(CONFIG_PINCTRL_NSP_MUX) += pinctrl-nsp-mux.o
+111 -7
drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
··· 66 66 #define GPIO_DRV_STRENGTH_BITS 3 67 67 #define GPIO_DRV_STRENGTH_BIT_MASK ((1 << GPIO_DRV_STRENGTH_BITS) - 1) 68 68 69 + enum 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 78 * Iproc GPIO core 71 79 * ··· 86 78 * @num_banks: number of GPIO banks, each bank supports up to 32 GPIOs 87 79 * @pinmux_is_supported: flag to indicate this GPIO controller contains pins 88 80 * that can be individually muxed to GPIO 81 + * @pinconf_disable: contains a list of PINCONF parameters that need to be 82 + * disabled 83 + * @nr_pinconf_disable: total number of PINCONF parameters that need to be 84 + * disabled 89 85 * @pctl: pointer to pinctrl_dev 90 86 * @pctldesc: pinctrl descriptor 91 87 */ ··· 105 93 unsigned num_banks; 106 94 107 95 bool pinmux_is_supported; 96 + 97 + enum pin_config_param *pinconf_disable; 98 + unsigned int nr_pinconf_disable; 108 99 109 100 struct pinctrl_dev *pctl; 110 101 struct pinctrl_desc pctldesc; ··· 375 360 return !!(readl(chip->base + offset) & BIT(shift)); 376 361 } 377 362 363 + /* 364 + * Mapping of the iProc PINCONF parameters to the generic pin configuration 365 + * parameters 366 + */ 367 + static const enum pin_config_param iproc_pinconf_disable_map[] = { 368 + [IPROC_PINCONF_DRIVE_STRENGTH] = PIN_CONFIG_DRIVE_STRENGTH, 369 + [IPROC_PINCONF_BIAS_DISABLE] = PIN_CONFIG_BIAS_DISABLE, 370 + [IPROC_PINCONF_BIAS_PULL_UP] = PIN_CONFIG_BIAS_PULL_UP, 371 + [IPROC_PINCONF_BIAS_PULL_DOWN] = PIN_CONFIG_BIAS_PULL_DOWN, 372 + }; 373 + 374 + static bool iproc_pinconf_param_is_disabled(struct iproc_gpio *chip, 375 + enum pin_config_param param) 376 + { 377 + unsigned int i; 378 + 379 + if (!chip->nr_pinconf_disable) 380 + return false; 381 + 382 + for (i = 0; i < chip->nr_pinconf_disable; i++) 383 + if (chip->pinconf_disable[i] == param) 384 + return true; 385 + 386 + return false; 387 + } 388 + 389 + static int iproc_pinconf_disable_map_create(struct iproc_gpio *chip, 390 + unsigned long disable_mask) 391 + { 392 + unsigned int map_size = ARRAY_SIZE(iproc_pinconf_disable_map); 393 + unsigned int bit, nbits = 0; 394 + 395 + /* figure out total number of PINCONF parameters to disable */ 396 + for_each_set_bit(bit, &disable_mask, map_size) 397 + nbits++; 398 + 399 + if (!nbits) 400 + return 0; 401 + 402 + /* 403 + * Allocate an array to store PINCONF parameters that need to be 404 + * disabled 405 + */ 406 + chip->pinconf_disable = devm_kcalloc(chip->dev, nbits, 407 + sizeof(*chip->pinconf_disable), 408 + GFP_KERNEL); 409 + if (!chip->pinconf_disable) 410 + return -ENOMEM; 411 + 412 + chip->nr_pinconf_disable = nbits; 413 + 414 + /* now store these parameters */ 415 + nbits = 0; 416 + for_each_set_bit(bit, &disable_mask, map_size) 417 + chip->pinconf_disable[nbits++] = iproc_pinconf_disable_map[bit]; 418 + 419 + return 0; 420 + } 421 + 378 422 static int iproc_get_groups_count(struct pinctrl_dev *pctldev) 379 423 { 380 424 return 1; ··· 574 500 bool disable, pull_up; 575 501 int ret; 576 502 503 + if (iproc_pinconf_param_is_disabled(chip, param)) 504 + return -ENOTSUPP; 505 + 577 506 switch (param) { 578 507 case PIN_CONFIG_BIAS_DISABLE: 579 508 iproc_gpio_get_pull(chip, gpio, &disable, &pull_up); ··· 625 548 626 549 for (i = 0; i < num_configs; i++) { 627 550 param = pinconf_to_config_param(configs[i]); 551 + 552 + if (iproc_pinconf_param_is_disabled(chip, param)) 553 + return -ENOTSUPP; 554 + 628 555 arg = pinconf_to_config_argument(configs[i]); 629 556 630 557 switch (param) { ··· 714 633 } 715 634 716 635 static const struct of_device_id iproc_gpio_of_match[] = { 636 + { .compatible = "brcm,iproc-gpio" }, 717 637 { .compatible = "brcm,cygnus-ccm-gpio" }, 718 638 { .compatible = "brcm,cygnus-asiu-gpio" }, 719 639 { .compatible = "brcm,cygnus-crmu-gpio" }, 720 - { .compatible = "brcm,iproc-gpio" }, 721 - { } 640 + { .compatible = "brcm,iproc-nsp-gpio" }, 641 + { .compatible = "brcm,iproc-stingray-gpio" }, 642 + { /* sentinel */ } 722 643 }; 723 644 724 645 static int iproc_gpio_probe(struct platform_device *pdev) ··· 729 646 struct resource *res; 730 647 struct iproc_gpio *chip; 731 648 struct gpio_chip *gc; 732 - u32 ngpios; 649 + u32 ngpios, pinconf_disable_mask = 0; 733 650 int irq, ret; 651 + bool no_pinconf = false; 652 + 653 + /* NSP does not support drive strength config */ 654 + if (of_device_is_compatible(dev->of_node, "brcm,iproc-nsp-gpio")) 655 + pinconf_disable_mask = BIT(IPROC_PINCONF_DRIVE_STRENGTH); 656 + /* Stingray does not support pinconf in this controller */ 657 + else if (of_device_is_compatible(dev->of_node, 658 + "brcm,iproc-stingray-gpio")) 659 + no_pinconf = true; 734 660 735 661 chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); 736 662 if (!chip) ··· 794 702 return ret; 795 703 } 796 704 797 - ret = iproc_gpio_register_pinconf(chip); 798 - if (ret) { 799 - dev_err(dev, "unable to register pinconf\n"); 800 - goto err_rm_gpiochip; 705 + if (!no_pinconf) { 706 + ret = iproc_gpio_register_pinconf(chip); 707 + if (ret) { 708 + dev_err(dev, "unable to register pinconf\n"); 709 + goto err_rm_gpiochip; 710 + } 711 + 712 + if (pinconf_disable_mask) { 713 + ret = iproc_pinconf_disable_map_create(chip, 714 + pinconf_disable_mask); 715 + if (ret) { 716 + dev_err(dev, 717 + "unable to create pinconf disable map\n"); 718 + goto err_rm_gpiochip; 719 + } 720 + } 801 721 } 802 722 803 723 /* optional GPIO interrupt support */
+4 -8
drivers/pinctrl/bcm/pinctrl-ns2-mux.c
··· 1044 1044 1045 1045 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1046 1046 pinctrl->base0 = devm_ioremap_resource(&pdev->dev, res); 1047 - if (IS_ERR(pinctrl->base0)) { 1048 - dev_err(&pdev->dev, "unable to map I/O space\n"); 1047 + if (IS_ERR(pinctrl->base0)) 1049 1048 return PTR_ERR(pinctrl->base0); 1050 - } 1051 1049 1052 1050 res = platform_get_resource(pdev, IORESOURCE_MEM, 1); 1053 1051 pinctrl->base1 = devm_ioremap_nocache(&pdev->dev, res->start, ··· 1057 1059 1058 1060 res = platform_get_resource(pdev, IORESOURCE_MEM, 2); 1059 1061 pinctrl->pinconf_base = devm_ioremap_resource(&pdev->dev, res); 1060 - if (IS_ERR(pinctrl->pinconf_base)) { 1061 - dev_err(&pdev->dev, "unable to map I/O space\n"); 1062 + if (IS_ERR(pinctrl->pinconf_base)) 1062 1063 return PTR_ERR(pinctrl->pinconf_base); 1063 - } 1064 1064 1065 1065 ret = ns2_mux_log_init(pinctrl); 1066 1066 if (ret) { ··· 1085 1089 1086 1090 pinctrl->pctl = pinctrl_register(&ns2_pinctrl_desc, &pdev->dev, 1087 1091 pinctrl); 1088 - if (!pinctrl->pctl) { 1092 + if (IS_ERR(pinctrl->pctl)) { 1089 1093 dev_err(&pdev->dev, "unable to register IOMUX pinctrl\n"); 1090 - return -EINVAL; 1094 + return PTR_ERR(pinctrl->pctl); 1091 1095 } 1092 1096 1093 1097 return 0;
+4 -2
drivers/pinctrl/bcm/pinctrl-nsp-gpio.c
··· 458 458 return 0; 459 459 } 460 460 461 - int nsp_pin_config_group_get(struct pinctrl_dev *pctldev, unsigned selector, 461 + static int nsp_pin_config_group_get(struct pinctrl_dev *pctldev, 462 + unsigned selector, 462 463 unsigned long *config) 463 464 { 464 465 return 0; 465 466 } 466 467 467 - int nsp_pin_config_group_set(struct pinctrl_dev *pctldev, unsigned selector, 468 + static int nsp_pin_config_group_set(struct pinctrl_dev *pctldev, 469 + unsigned selector, 468 470 unsigned long *configs, unsigned num_configs) 469 471 { 470 472 return 0;
+642
drivers/pinctrl/bcm/pinctrl-nsp-mux.c
··· 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 + */ 52 + struct 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 + */ 66 + struct 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 + */ 79 + struct 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 + */ 93 + struct 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 + */ 114 + struct 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 + */ 135 + struct 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 + */ 151 + static 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 + 201 + static const unsigned int spi_pins[] = {0, 1, 2, 3}; 202 + static const unsigned int i2c_pins[] = {4, 5}; 203 + static const unsigned int mdio_pins[] = {6, 7}; 204 + static const unsigned int pwm0_pins[] = {8}; 205 + static const unsigned int gpio_b_0_pins[] = {8}; 206 + static const unsigned int pwm1_pins[] = {9}; 207 + static const unsigned int gpio_b_1_pins[] = {9}; 208 + static const unsigned int pwm2_pins[] = {10}; 209 + static const unsigned int gpio_b_2_pins[] = {10}; 210 + static const unsigned int pwm3_pins[] = {11}; 211 + static const unsigned int gpio_b_3_pins[] = {11}; 212 + static const unsigned int uart1_pins[] = {12, 13, 14, 15}; 213 + static const unsigned int uart2_pins[] = {16, 17}; 214 + static const unsigned int synce_pins[] = {18}; 215 + static const unsigned int sata0_led_pins[] = {19}; 216 + static const unsigned int sata1_led_pins[] = {20}; 217 + static const unsigned int xtal_out_pins[] = {21}; 218 + static const unsigned int sdio_pwr_pins[] = {22}; 219 + static const unsigned int sdio_1p8v_pins[] = {23}; 220 + static const unsigned int switch_p05_led0_pins[] = {26}; 221 + static const unsigned int switch_p05_led1_pins[] = {27}; 222 + static const unsigned int nand_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 223 + 40, 41, 42}; 224 + static 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 + */ 243 + static 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 + 273 + static const char * const spi_grps[] = {"spi_grp"}; 274 + static const char * const i2c_grps[] = {"i2c_grp"}; 275 + static const char * const mdio_grps[] = {"mdio_grp"}; 276 + static const char * const pwm_grps[] = {"pwm0_grp", "pwm1_grp", "pwm2_grp" 277 + , "pwm3_grp"}; 278 + static const char * const gpio_b_grps[] = {"gpio_b_0_grp", "gpio_b_1_grp", 279 + "gpio_b_2_grp", "gpio_b_3_grp"}; 280 + static const char * const uart1_grps[] = {"uart1_grp"}; 281 + static const char * const uart2_grps[] = {"uart2_grp"}; 282 + static const char * const synce_grps[] = {"synce_grp"}; 283 + static const char * const sata_led_grps[] = {"sata0_led_grp", "sata1_led_grp"}; 284 + static const char * const xtal_out_grps[] = {"xtal_out_grp"}; 285 + static const char * const sdio_grps[] = {"sdio_pwr_grp", "sdio_1p8v_grp"}; 286 + static const char * const switch_led_grps[] = {"switch_p05_led0_grp", 287 + "switch_p05_led1_grp"}; 288 + static const char * const nand_grps[] = {"nand_grp"}; 289 + static 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 + */ 301 + static 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 + 318 + static 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 + 325 + static 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 + 333 + static 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 + 345 + static 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 + 351 + static 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 + 360 + static 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 + 367 + static 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 + 375 + static 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 + 388 + static 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 + 456 + static 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 + 480 + static 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 + 501 + static 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 + 521 + static 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 + 530 + static struct pinctrl_desc nsp_pinctrl_desc = { 531 + .name = "nsp-pinmux", 532 + .pctlops = &nsp_pinctrl_ops, 533 + .pmxops = &nsp_pinmux_ops, 534 + }; 535 + 536 + static 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 + 559 + static 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 + 625 + static const struct of_device_id nsp_pinmux_of_match[] = { 626 + { .compatible = "brcm,nsp-pinmux" }, 627 + { } 628 + }; 629 + 630 + static 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 + 638 + static int __init nsp_pinmux_init(void) 639 + { 640 + return platform_driver_register(&nsp_pinmux_driver); 641 + } 642 + arch_initcall(nsp_pinmux_init);
+13 -12
drivers/pinctrl/core.c
··· 225 225 } 226 226 227 227 static 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 230 struct pin_desc *pindesc; 231 231 232 - pindesc = pin_desc_get(pctldev, number); 232 + pindesc = pin_desc_get(pctldev, pin->number); 233 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 236 return -EINVAL; 236 237 } 237 238 ··· 246 245 pindesc->pctldev = pctldev; 247 246 248 247 /* Copy basic pin info */ 249 - if (name) { 250 - pindesc->name = name; 248 + if (pin->name) { 249 + pindesc->name = pin->name; 251 250 } else { 252 - pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", number); 251 + pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", pin->number); 253 252 if (pindesc->name == NULL) { 254 253 kfree(pindesc); 255 254 return -ENOMEM; ··· 257 256 pindesc->dynamic_name = true; 258 257 } 259 258 260 - radix_tree_insert(&pctldev->pin_desc_tree, number, pindesc); 259 + pindesc->drv_data = pin->drv_data; 260 + 261 + radix_tree_insert(&pctldev->pin_desc_tree, pin->number, pindesc); 261 262 pr_debug("registered pin %d (%s) on %s\n", 262 - number, pindesc->name, pctldev->desc->name); 263 + pin->number, pindesc->name, pctldev->desc->name); 263 264 return 0; 264 265 } 265 266 ··· 273 270 int ret = 0; 274 271 275 272 for (i = 0; i < num_descs; i++) { 276 - ret = pinctrl_register_one_pin(pctldev, 277 - pins[i].number, pins[i].name); 273 + ret = pinctrl_register_one_pin(pctldev, &pins[i]); 278 274 if (ret) 279 275 return ret; 280 276 } ··· 1369 1367 if (desc == NULL) 1370 1368 continue; 1371 1369 1372 - seq_printf(s, "pin %d (%s) ", pin, 1373 - desc->name ? desc->name : "unnamed"); 1370 + seq_printf(s, "pin %d (%s) ", pin, desc->name); 1374 1371 1375 1372 /* Driver-specific info per pin */ 1376 1373 if (ops->pin_dbg_show)
+2
drivers/pinctrl/core.h
··· 134 134 * @name: a name for the pin, e.g. the name of the pin/pad/finger on a 135 135 * datasheet or such 136 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 138 * @mux_usecount: If zero, the pin is not claimed, and @owner should be NULL. 138 139 * If non-zero, this pin is claimed by @owner. This field is an integer 139 140 * rather than a boolean, since pinctrl_get() might process multiple ··· 149 148 struct pinctrl_dev *pctldev; 150 149 const char *name; 151 150 bool dynamic_name; 151 + void *drv_data; 152 152 /* These fields only added when supporting pinmux drivers */ 153 153 #ifdef CONFIG_PINMUX 154 154 unsigned mux_usecount;
+6 -1
drivers/pinctrl/devicetree.c
··· 195 195 propname = kasprintf(GFP_KERNEL, "pinctrl-%d", state); 196 196 prop = of_find_property(np, propname, &size); 197 197 kfree(propname); 198 - if (!prop) 198 + if (!prop) { 199 + if (state == 0) { 200 + of_node_put(np); 201 + return -ENODEV; 202 + } 199 203 break; 204 + } 200 205 list = prop->value; 201 206 size /= sizeof(*list); 202 207
+16 -13
drivers/pinctrl/freescale/pinctrl-imx.c
··· 16 16 #include <linux/init.h> 17 17 #include <linux/io.h> 18 18 #include <linux/mfd/syscon.h> 19 - #include <linux/module.h> 20 19 #include <linux/of.h> 21 20 #include <linux/of_device.h> 22 21 #include <linux/of_address.h> ··· 45 46 const struct imx_pinctrl_soc_info *info; 46 47 }; 47 48 48 - static const inline struct imx_pin_group *imx_pinctrl_find_group_by_name( 49 + static inline const struct imx_pin_group *imx_pinctrl_find_group_by_name( 49 50 const struct imx_pinctrl_soc_info *info, 50 51 const char *name) 51 52 { ··· 512 513 .pin_config_group_dbg_show = imx_pinconf_group_dbg_show, 513 514 }; 514 515 515 - static struct pinctrl_desc imx_pinctrl_desc = { 516 - .pctlops = &imx_pctrl_ops, 517 - .pmxops = &imx_pmx_ops, 518 - .confops = &imx_pinconf_ops, 519 - .owner = THIS_MODULE, 520 - }; 521 - 522 516 /* 523 517 * Each pin represented in fsl,pins consists of 5 u32 PIN_FUNC_ID and 524 518 * 1 u32 CONFIG, so 24 types in total for each pin. ··· 714 722 { 715 723 struct regmap_config config = { .name = "gpr" }; 716 724 struct device_node *dev_np = pdev->dev.of_node; 725 + struct pinctrl_desc *imx_pinctrl_desc; 717 726 struct device_node *np; 718 727 struct imx_pinctrl *ipctl; 719 728 struct resource *res; ··· 769 776 } 770 777 } 771 778 772 - imx_pinctrl_desc.name = dev_name(&pdev->dev); 773 - imx_pinctrl_desc.pins = info->pins; 774 - imx_pinctrl_desc.npins = info->npins; 779 + imx_pinctrl_desc = devm_kzalloc(&pdev->dev, sizeof(*imx_pinctrl_desc), 780 + GFP_KERNEL); 781 + if (!imx_pinctrl_desc) 782 + return -ENOMEM; 783 + 784 + imx_pinctrl_desc->name = dev_name(&pdev->dev); 785 + imx_pinctrl_desc->pins = info->pins; 786 + imx_pinctrl_desc->npins = info->npins; 787 + imx_pinctrl_desc->pctlops = &imx_pctrl_ops, 788 + imx_pinctrl_desc->pmxops = &imx_pmx_ops, 789 + imx_pinctrl_desc->confops = &imx_pinconf_ops, 790 + imx_pinctrl_desc->owner = THIS_MODULE, 775 791 776 792 ret = imx_pinctrl_probe_dt(pdev, info); 777 793 if (ret) { ··· 791 789 ipctl->info = info; 792 790 ipctl->dev = info->dev; 793 791 platform_set_drvdata(pdev, ipctl); 794 - ipctl->pctl = devm_pinctrl_register(&pdev->dev, &imx_pinctrl_desc, ipctl); 792 + ipctl->pctl = devm_pinctrl_register(&pdev->dev, 793 + imx_pinctrl_desc, ipctl); 795 794 if (IS_ERR(ipctl->pctl)) { 796 795 dev_err(&pdev->dev, "could not register IMX pinctrl driver\n"); 797 796 return PTR_ERR(ipctl->pctl);
+1 -2
drivers/pinctrl/freescale/pinctrl-imx1-core.c
··· 19 19 #include <linux/err.h> 20 20 #include <linux/init.h> 21 21 #include <linux/io.h> 22 - #include <linux/module.h> 23 22 #include <linux/of.h> 24 23 #include <linux/of_device.h> 25 24 #include <linux/pinctrl/machine.h> ··· 156 157 return !!(readl(reg) & BIT(offset)); 157 158 } 158 159 159 - static const inline struct imx1_pin_group *imx1_pinctrl_find_group_by_name( 160 + static inline const struct imx1_pin_group *imx1_pinctrl_find_group_by_name( 160 161 const struct imx1_pinctrl_soc_info *info, 161 162 const char *name) 162 163 {
+2 -7
drivers/pinctrl/freescale/pinctrl-imx1.c
··· 9 9 * (at your option) any later version. 10 10 */ 11 11 12 - #include <linux/module.h> 12 + #include <linux/init.h> 13 13 #include <linux/of.h> 14 14 #include <linux/platform_device.h> 15 15 #include <linux/pinctrl/pinctrl.h> ··· 262 262 { .compatible = "fsl,imx1-iomuxc", }, 263 263 { } 264 264 }; 265 - MODULE_DEVICE_TABLE(of, imx1_pinctrl_of_match); 266 265 267 266 static struct platform_driver imx1_pinctrl_driver = { 268 267 .driver = { ··· 269 270 .of_match_table = imx1_pinctrl_of_match, 270 271 }, 271 272 }; 272 - module_platform_driver_probe(imx1_pinctrl_driver, imx1_pinctrl_probe); 273 - 274 - MODULE_AUTHOR("Alexander Shiyan <shc_work@mail.ru>"); 275 - MODULE_DESCRIPTION("Freescale i.MX1 pinctrl driver"); 276 - MODULE_LICENSE("GPL"); 273 + builtin_platform_driver_probe(imx1_pinctrl_driver, imx1_pinctrl_probe);
+2 -7
drivers/pinctrl/freescale/pinctrl-imx21.c
··· 9 9 * (at your option) any later version. 10 10 */ 11 11 12 - #include <linux/module.h> 12 + #include <linux/init.h> 13 13 #include <linux/of.h> 14 14 #include <linux/platform_device.h> 15 15 #include <linux/pinctrl/pinctrl.h> ··· 325 325 { .compatible = "fsl,imx21-iomuxc", }, 326 326 { } 327 327 }; 328 - MODULE_DEVICE_TABLE(of, imx21_pinctrl_of_match); 329 328 330 329 static struct platform_driver imx21_pinctrl_driver = { 331 330 .driver = { ··· 332 333 .of_match_table = imx21_pinctrl_of_match, 333 334 }, 334 335 }; 335 - module_platform_driver_probe(imx21_pinctrl_driver, imx21_pinctrl_probe); 336 - 337 - MODULE_AUTHOR("Alexander Shiyan <shc_work@mail.ru>"); 338 - MODULE_DESCRIPTION("Freescale i.MX21 pinctrl driver"); 339 - MODULE_LICENSE("GPL"); 336 + builtin_platform_driver_probe(imx21_pinctrl_driver, imx21_pinctrl_probe);
+4 -13
drivers/pinctrl/freescale/pinctrl-imx23.c
··· 1 1 /* 2 + * Freescale i.MX23 pinctrl driver 3 + * 4 + * Author: Shawn Guo <shawn.guo@linaro.org> 2 5 * Copyright 2012 Freescale Semiconductor, Inc. 3 6 * 4 7 * The code contained herein is licensed under the GNU General Public ··· 13 10 */ 14 11 15 12 #include <linux/init.h> 16 - #include <linux/module.h> 17 13 #include <linux/of_device.h> 18 14 #include <linux/pinctrl/pinctrl.h> 19 15 #include "pinctrl-mxs.h" ··· 278 276 { .compatible = "fsl,imx23-pinctrl", }, 279 277 { /* sentinel */ } 280 278 }; 281 - MODULE_DEVICE_TABLE(of, imx23_pinctrl_of_match); 282 279 283 280 static struct platform_driver imx23_pinctrl_driver = { 284 281 .driver = { 285 282 .name = "imx23-pinctrl", 283 + .suppress_bind_attrs = true, 286 284 .of_match_table = imx23_pinctrl_of_match, 287 285 }, 288 286 .probe = imx23_pinctrl_probe, 289 - .remove = mxs_pinctrl_remove, 290 287 }; 291 288 292 289 static int __init imx23_pinctrl_init(void) ··· 293 292 return platform_driver_register(&imx23_pinctrl_driver); 294 293 } 295 294 postcore_initcall(imx23_pinctrl_init); 296 - 297 - static void __exit imx23_pinctrl_exit(void) 298 - { 299 - platform_driver_unregister(&imx23_pinctrl_driver); 300 - } 301 - module_exit(imx23_pinctrl_exit); 302 - 303 - MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); 304 - MODULE_DESCRIPTION("Freescale i.MX23 pinctrl driver"); 305 - MODULE_LICENSE("GPL v2");
-10
drivers/pinctrl/freescale/pinctrl-imx25.c
··· 18 18 #include <linux/err.h> 19 19 #include <linux/init.h> 20 20 #include <linux/io.h> 21 - #include <linux/module.h> 22 21 #include <linux/of.h> 23 22 #include <linux/of_device.h> 24 23 #include <linux/pinctrl/pinctrl.h> ··· 337 338 return platform_driver_register(&imx25_pinctrl_driver); 338 339 } 339 340 arch_initcall(imx25_pinctrl_init); 340 - 341 - static void __exit imx25_pinctrl_exit(void) 342 - { 343 - platform_driver_unregister(&imx25_pinctrl_driver); 344 - } 345 - module_exit(imx25_pinctrl_exit); 346 - MODULE_AUTHOR("Denis Carikli <denis@eukrea.com>"); 347 - MODULE_DESCRIPTION("Freescale IMX25 pinctrl driver"); 348 - MODULE_LICENSE("GPL v2");
-10
drivers/pinctrl/freescale/pinctrl-imx27.c
··· 14 14 #include <linux/err.h> 15 15 #include <linux/init.h> 16 16 #include <linux/io.h> 17 - #include <linux/module.h> 18 17 #include <linux/of.h> 19 18 #include <linux/of_device.h> 20 19 #include <linux/pinctrl/pinctrl.h> ··· 411 412 return platform_driver_register(&imx27_pinctrl_driver); 412 413 } 413 414 arch_initcall(imx27_pinctrl_init); 414 - 415 - static void __exit imx27_pinctrl_exit(void) 416 - { 417 - platform_driver_unregister(&imx27_pinctrl_driver); 418 - } 419 - module_exit(imx27_pinctrl_exit); 420 - MODULE_AUTHOR("Markus Pargmann <mpa@pengutronix.de>"); 421 - MODULE_DESCRIPTION("Freescale IMX27 pinctrl driver"); 422 - MODULE_LICENSE("GPL v2");
+4 -13
drivers/pinctrl/freescale/pinctrl-imx28.c
··· 1 1 /* 2 + * Freescale i.MX28 pinctrl driver 3 + * 4 + * Author: Shawn Guo <shawn.guo@linaro.org> 2 5 * Copyright 2012 Freescale Semiconductor, Inc. 3 6 * 4 7 * The code contained herein is licensed under the GNU General Public ··· 13 10 */ 14 11 15 12 #include <linux/init.h> 16 - #include <linux/module.h> 17 13 #include <linux/of_device.h> 18 14 #include <linux/pinctrl/pinctrl.h> 19 15 #include "pinctrl-mxs.h" ··· 394 392 { .compatible = "fsl,imx28-pinctrl", }, 395 393 { /* sentinel */ } 396 394 }; 397 - MODULE_DEVICE_TABLE(of, imx28_pinctrl_of_match); 398 395 399 396 static struct platform_driver imx28_pinctrl_driver = { 400 397 .driver = { 401 398 .name = "imx28-pinctrl", 399 + .suppress_bind_attrs = true, 402 400 .of_match_table = imx28_pinctrl_of_match, 403 401 }, 404 402 .probe = imx28_pinctrl_probe, 405 - .remove = mxs_pinctrl_remove, 406 403 }; 407 404 408 405 static int __init imx28_pinctrl_init(void) ··· 409 408 return platform_driver_register(&imx28_pinctrl_driver); 410 409 } 411 410 postcore_initcall(imx28_pinctrl_init); 412 - 413 - static void __exit imx28_pinctrl_exit(void) 414 - { 415 - platform_driver_unregister(&imx28_pinctrl_driver); 416 - } 417 - module_exit(imx28_pinctrl_exit); 418 - 419 - MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); 420 - MODULE_DESCRIPTION("Freescale i.MX28 pinctrl driver"); 421 - MODULE_LICENSE("GPL v2");
-10
drivers/pinctrl/freescale/pinctrl-imx35.c
··· 16 16 #include <linux/err.h> 17 17 #include <linux/init.h> 18 18 #include <linux/io.h> 19 - #include <linux/module.h> 20 19 #include <linux/of.h> 21 20 #include <linux/of_device.h> 22 21 #include <linux/pinctrl/pinctrl.h> ··· 1027 1028 return platform_driver_register(&imx35_pinctrl_driver); 1028 1029 } 1029 1030 arch_initcall(imx35_pinctrl_init); 1030 - 1031 - static void __exit imx35_pinctrl_exit(void) 1032 - { 1033 - platform_driver_unregister(&imx35_pinctrl_driver); 1034 - } 1035 - module_exit(imx35_pinctrl_exit); 1036 - MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>"); 1037 - MODULE_DESCRIPTION("Freescale IMX35 pinctrl driver"); 1038 - MODULE_LICENSE("GPL v2");
-9
drivers/pinctrl/freescale/pinctrl-imx50.c
··· 14 14 #include <linux/err.h> 15 15 #include <linux/init.h> 16 16 #include <linux/io.h> 17 - #include <linux/module.h> 18 17 #include <linux/of.h> 19 18 #include <linux/of_device.h> 20 19 #include <linux/pinctrl/pinctrl.h> ··· 414 415 return platform_driver_register(&imx50_pinctrl_driver); 415 416 } 416 417 arch_initcall(imx50_pinctrl_init); 417 - 418 - static void __exit imx50_pinctrl_exit(void) 419 - { 420 - platform_driver_unregister(&imx50_pinctrl_driver); 421 - } 422 - module_exit(imx50_pinctrl_exit); 423 - MODULE_DESCRIPTION("Freescale IMX50 pinctrl driver"); 424 - MODULE_LICENSE("GPL v2");
-10
drivers/pinctrl/freescale/pinctrl-imx51.c
··· 15 15 #include <linux/err.h> 16 16 #include <linux/init.h> 17 17 #include <linux/io.h> 18 - #include <linux/module.h> 19 18 #include <linux/of.h> 20 19 #include <linux/of_device.h> 21 20 #include <linux/pinctrl/pinctrl.h> ··· 790 791 return platform_driver_register(&imx51_pinctrl_driver); 791 792 } 792 793 arch_initcall(imx51_pinctrl_init); 793 - 794 - static void __exit imx51_pinctrl_exit(void) 795 - { 796 - platform_driver_unregister(&imx51_pinctrl_driver); 797 - } 798 - module_exit(imx51_pinctrl_exit); 799 - MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>"); 800 - MODULE_DESCRIPTION("Freescale IMX51 pinctrl driver"); 801 - MODULE_LICENSE("GPL v2");
-10
drivers/pinctrl/freescale/pinctrl-imx53.c
··· 15 15 #include <linux/err.h> 16 16 #include <linux/init.h> 17 17 #include <linux/io.h> 18 - #include <linux/module.h> 19 18 #include <linux/of.h> 20 19 #include <linux/of_device.h> 21 20 #include <linux/pinctrl/pinctrl.h> ··· 477 478 return platform_driver_register(&imx53_pinctrl_driver); 478 479 } 479 480 arch_initcall(imx53_pinctrl_init); 480 - 481 - static void __exit imx53_pinctrl_exit(void) 482 - { 483 - platform_driver_unregister(&imx53_pinctrl_driver); 484 - } 485 - module_exit(imx53_pinctrl_exit); 486 - MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>"); 487 - MODULE_DESCRIPTION("Freescale IMX53 pinctrl driver"); 488 - MODULE_LICENSE("GPL v2");
+3 -11
drivers/pinctrl/freescale/pinctrl-imx6dl.c
··· 1 1 /* 2 + * Freescale imx6dl pinctrl driver 3 + * 4 + * Author: Shawn Guo <shawn.guo@linaro.org> 2 5 * Copyright (C) 2013 Freescale Semiconductor, Inc. 3 6 * 4 7 * This program is free software; you can redistribute it and/or modify ··· 12 9 #include <linux/err.h> 13 10 #include <linux/init.h> 14 11 #include <linux/io.h> 15 - #include <linux/module.h> 16 12 #include <linux/of.h> 17 13 #include <linux/of_device.h> 18 14 #include <linux/pinctrl/pinctrl.h> ··· 486 484 return platform_driver_register(&imx6dl_pinctrl_driver); 487 485 } 488 486 arch_initcall(imx6dl_pinctrl_init); 489 - 490 - static void __exit imx6dl_pinctrl_exit(void) 491 - { 492 - platform_driver_unregister(&imx6dl_pinctrl_driver); 493 - } 494 - module_exit(imx6dl_pinctrl_exit); 495 - 496 - MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); 497 - MODULE_DESCRIPTION("Freescale imx6dl pinctrl driver"); 498 - MODULE_LICENSE("GPL v2");
-10
drivers/pinctrl/freescale/pinctrl-imx6q.c
··· 15 15 #include <linux/err.h> 16 16 #include <linux/init.h> 17 17 #include <linux/io.h> 18 - #include <linux/module.h> 19 18 #include <linux/of.h> 20 19 #include <linux/of_device.h> 21 20 #include <linux/pinctrl/pinctrl.h> ··· 489 490 return platform_driver_register(&imx6q_pinctrl_driver); 490 491 } 491 492 arch_initcall(imx6q_pinctrl_init); 492 - 493 - static void __exit imx6q_pinctrl_exit(void) 494 - { 495 - platform_driver_unregister(&imx6q_pinctrl_driver); 496 - } 497 - module_exit(imx6q_pinctrl_exit); 498 - MODULE_AUTHOR("Dong Aisheng <dong.aisheng@linaro.org>"); 499 - MODULE_DESCRIPTION("Freescale IMX6Q pinctrl driver"); 500 - MODULE_LICENSE("GPL v2");
+3 -12
drivers/pinctrl/freescale/pinctrl-imx6sl.c
··· 1 1 /* 2 + * Freescale imx6sl pinctrl driver 3 + * 4 + * Author: Shawn Guo <shawn.guo@linaro.org> 2 5 * Copyright (C) 2013 Freescale Semiconductor, Inc. 3 6 * 4 7 * This program is free software; you can redistribute it and/or modify ··· 12 9 #include <linux/err.h> 13 10 #include <linux/init.h> 14 11 #include <linux/io.h> 15 - #include <linux/module.h> 16 12 #include <linux/of.h> 17 13 #include <linux/of_device.h> 18 14 #include <linux/pinctrl/pinctrl.h> ··· 373 371 { .compatible = "fsl,imx6sl-iomuxc", }, 374 372 { /* sentinel */ } 375 373 }; 376 - MODULE_DEVICE_TABLE(of, imx6sl_pinctrl_of_match); 377 374 378 375 static int imx6sl_pinctrl_probe(struct platform_device *pdev) 379 376 { ··· 392 391 return platform_driver_register(&imx6sl_pinctrl_driver); 393 392 } 394 393 arch_initcall(imx6sl_pinctrl_init); 395 - 396 - static void __exit imx6sl_pinctrl_exit(void) 397 - { 398 - platform_driver_unregister(&imx6sl_pinctrl_driver); 399 - } 400 - module_exit(imx6sl_pinctrl_exit); 401 - 402 - MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>"); 403 - MODULE_DESCRIPTION("Freescale imx6sl pinctrl driver"); 404 - MODULE_LICENSE("GPL v2");
+3 -11
drivers/pinctrl/freescale/pinctrl-imx6sx.c
··· 1 1 /* 2 + * Freescale imx6sx pinctrl driver 3 + * 4 + * Author: Anson Huang <Anson.Huang@freescale.com> 2 5 * Copyright (C) 2014 Freescale Semiconductor, Inc. 3 6 * 4 7 * This program is free software; you can redistribute it and/or modify ··· 12 9 #include <linux/err.h> 13 10 #include <linux/init.h> 14 11 #include <linux/io.h> 15 - #include <linux/module.h> 16 12 #include <linux/of.h> 17 13 #include <linux/of_device.h> 18 14 #include <linux/pinctrl/pinctrl.h> ··· 396 394 return platform_driver_register(&imx6sx_pinctrl_driver); 397 395 } 398 396 arch_initcall(imx6sx_pinctrl_init); 399 - 400 - static void __exit imx6sx_pinctrl_exit(void) 401 - { 402 - platform_driver_unregister(&imx6sx_pinctrl_driver); 403 - } 404 - module_exit(imx6sx_pinctrl_exit); 405 - 406 - MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>"); 407 - MODULE_DESCRIPTION("Freescale imx6sx pinctrl driver"); 408 - MODULE_LICENSE("GPL v2");
+3 -11
drivers/pinctrl/freescale/pinctrl-imx6ul.c
··· 1 1 /* 2 + * Freescale imx6ul pinctrl driver 3 + * 4 + * Author: Anson Huang <Anson.Huang@freescale.com> 2 5 * Copyright (C) 2015 Freescale Semiconductor, Inc. 3 6 * 4 7 * This program is free software; you can redistribute it and/or modify ··· 12 9 #include <linux/err.h> 13 10 #include <linux/init.h> 14 11 #include <linux/io.h> 15 - #include <linux/module.h> 16 12 #include <linux/of.h> 17 13 #include <linux/of_device.h> 18 14 #include <linux/pinctrl/pinctrl.h> ··· 312 310 return platform_driver_register(&imx6ul_pinctrl_driver); 313 311 } 314 312 arch_initcall(imx6ul_pinctrl_init); 315 - 316 - static void __exit imx6ul_pinctrl_exit(void) 317 - { 318 - platform_driver_unregister(&imx6ul_pinctrl_driver); 319 - } 320 - module_exit(imx6ul_pinctrl_exit); 321 - 322 - MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>"); 323 - MODULE_DESCRIPTION("Freescale imx6ul pinctrl driver"); 324 - MODULE_LICENSE("GPL v2");
+3 -11
drivers/pinctrl/freescale/pinctrl-imx7d.c
··· 1 1 /* 2 + * Freescale imx7d pinctrl driver 3 + * 4 + * Author: Anson Huang <Anson.Huang@freescale.com> 2 5 * Copyright (C) 2014-2015 Freescale Semiconductor, Inc. 3 6 * 4 7 * This program is free software; you can redistribute it and/or modify ··· 12 9 #include <linux/err.h> 13 10 #include <linux/init.h> 14 11 #include <linux/io.h> 15 - #include <linux/module.h> 16 12 #include <linux/of.h> 17 13 #include <linux/of_device.h> 18 14 #include <linux/pinctrl/pinctrl.h> ··· 404 402 return platform_driver_register(&imx7d_pinctrl_driver); 405 403 } 406 404 arch_initcall(imx7d_pinctrl_init); 407 - 408 - static void __exit imx7d_pinctrl_exit(void) 409 - { 410 - platform_driver_unregister(&imx7d_pinctrl_driver); 411 - } 412 - module_exit(imx7d_pinctrl_exit); 413 - 414 - MODULE_AUTHOR("Anson Huang <Anson.Huang@freescale.com>"); 415 - MODULE_DESCRIPTION("Freescale imx7d pinctrl driver"); 416 - MODULE_LICENSE("GPL v2");
-12
drivers/pinctrl/freescale/pinctrl-mxs.c
··· 12 12 #include <linux/err.h> 13 13 #include <linux/init.h> 14 14 #include <linux/io.h> 15 - #include <linux/module.h> 16 15 #include <linux/of.h> 17 16 #include <linux/of_address.h> 18 17 #include <linux/pinctrl/machine.h> ··· 552 553 return ret; 553 554 } 554 555 EXPORT_SYMBOL_GPL(mxs_pinctrl_probe); 555 - 556 - int mxs_pinctrl_remove(struct platform_device *pdev) 557 - { 558 - struct mxs_pinctrl_data *d = platform_get_drvdata(pdev); 559 - 560 - pinctrl_unregister(d->pctl); 561 - iounmap(d->base); 562 - 563 - return 0; 564 - } 565 - EXPORT_SYMBOL_GPL(mxs_pinctrl_remove);
-1
drivers/pinctrl/freescale/pinctrl-mxs.h
··· 86 86 87 87 int mxs_pinctrl_probe(struct platform_device *pdev, 88 88 struct mxs_pinctrl_soc_data *soc); 89 - int mxs_pinctrl_remove(struct platform_device *pdev); 90 89 91 90 #endif /* __PINCTRL_MXS_H */
-10
drivers/pinctrl/freescale/pinctrl-vf610.c
··· 12 12 #include <linux/err.h> 13 13 #include <linux/init.h> 14 14 #include <linux/io.h> 15 - #include <linux/module.h> 16 15 #include <linux/of.h> 17 16 #include <linux/of_device.h> 18 17 #include <linux/pinctrl/pinctrl.h> ··· 324 325 return platform_driver_register(&vf610_pinctrl_driver); 325 326 } 326 327 arch_initcall(vf610_pinctrl_init); 327 - 328 - static void __exit vf610_pinctrl_exit(void) 329 - { 330 - platform_driver_unregister(&vf610_pinctrl_driver); 331 - } 332 - module_exit(vf610_pinctrl_exit); 333 - 334 - MODULE_DESCRIPTION("Freescale VF610 pinctrl driver"); 335 - MODULE_LICENSE("GPL v2");
+11
drivers/pinctrl/intel/Kconfig
··· 29 29 Cherryview/Braswell pinctrl driver provides an interface that 30 30 allows configuring of SoC pins and using them as GPIOs. 31 31 32 + config 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 + 32 43 config PINCTRL_INTEL 33 44 tristate 34 45 select PINMUX
+1
drivers/pinctrl/intel/Makefile
··· 2 2 3 3 obj-$(CONFIG_PINCTRL_BAYTRAIL) += pinctrl-baytrail.o 4 4 obj-$(CONFIG_PINCTRL_CHERRYVIEW) += pinctrl-cherryview.o 5 + obj-$(CONFIG_PINCTRL_MERRIFIELD) += pinctrl-merrifield.o 5 6 obj-$(CONFIG_PINCTRL_INTEL) += pinctrl-intel.o 6 7 obj-$(CONFIG_PINCTRL_BROXTON) += pinctrl-broxton.o 7 8 obj-$(CONFIG_PINCTRL_SUNRISEPOINT) += pinctrl-sunrisepoint.o
+4 -21
drivers/pinctrl/intel/pinctrl-baytrail.c
··· 15 15 */ 16 16 17 17 #include <linux/kernel.h> 18 - #include <linux/module.h> 19 18 #include <linux/init.h> 20 19 #include <linux/types.h> 21 20 #include <linux/bitops.h> ··· 1821 1822 return 0; 1822 1823 } 1823 1824 1824 - static int byt_pinctrl_remove(struct platform_device *pdev) 1825 - { 1826 - struct byt_gpio *vg = platform_get_drvdata(pdev); 1827 - 1828 - pm_runtime_disable(&pdev->dev); 1829 - gpiochip_remove(&vg->chip); 1830 - pinctrl_unregister(vg->pctl_dev); 1831 - 1832 - return 0; 1833 - } 1834 - 1835 1825 #ifdef CONFIG_PM_SLEEP 1836 1826 static int byt_gpio_suspend(struct device *dev) 1837 1827 { ··· 1918 1930 1919 1931 static struct platform_driver byt_gpio_driver = { 1920 1932 .probe = byt_pinctrl_probe, 1921 - .remove = byt_pinctrl_remove, 1922 1933 .driver = { 1923 - .name = "byt_gpio", 1924 - .pm = &byt_gpio_pm_ops, 1934 + .name = "byt_gpio", 1935 + .pm = &byt_gpio_pm_ops, 1936 + .suppress_bind_attrs = true, 1937 + 1925 1938 .acpi_match_table = ACPI_PTR(byt_gpio_acpi_match), 1926 1939 }, 1927 1940 }; ··· 1932 1943 return platform_driver_register(&byt_gpio_driver); 1933 1944 } 1934 1945 subsys_initcall(byt_gpio_init); 1935 - 1936 - static void __exit byt_gpio_exit(void) 1937 - { 1938 - platform_driver_unregister(&byt_gpio_driver); 1939 - } 1940 - module_exit(byt_gpio_exit);
+31 -12
drivers/pinctrl/intel/pinctrl-broxton.c
··· 1 1 /* 2 2 * Intel Broxton SoC pinctrl/GPIO driver 3 3 * 4 - * Copyright (C) 2015, Intel Corporation 4 + * Copyright (C) 2015, 2016 Intel Corporation 5 5 * Author: Mika Westerberg <mika.westerberg@linux.intel.com> 6 6 * 7 7 * This program is free software; you can redistribute it and/or modify ··· 1003 1003 }; 1004 1004 MODULE_DEVICE_TABLE(acpi, bxt_pinctrl_acpi_match); 1005 1005 1006 + static 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 + 1006 1012 static int bxt_pinctrl_probe(struct platform_device *pdev) 1007 1013 { 1008 1014 const struct intel_pinctrl_soc_data *soc_data = NULL; 1009 1015 const struct intel_pinctrl_soc_data **soc_table; 1010 - const struct acpi_device_id *id; 1011 1016 struct acpi_device *adev; 1012 1017 int i; 1013 1018 1014 1019 adev = ACPI_COMPANION(&pdev->dev); 1015 - if (!adev) 1016 - return -ENODEV; 1020 + if (adev) { 1021 + const struct acpi_device_id *id; 1017 1022 1018 - id = acpi_match_device(bxt_pinctrl_acpi_match, &pdev->dev); 1019 - if (!id) 1020 - return -ENODEV; 1023 + id = acpi_match_device(bxt_pinctrl_acpi_match, &pdev->dev); 1024 + if (!id) 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++) { 1025 - if (!strcmp(adev->pnp.unique_id, soc_table[i]->uid)) { 1026 - soc_data = soc_table[i]; 1027 - break; 1030 + for (i = 0; soc_table[i]; i++) { 1031 + if (!strcmp(adev->pnp.unique_id, soc_table[i]->uid)) { 1032 + soc_data = soc_table[i]; 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 1048 if (!soc_data) ··· 1064 1047 .acpi_match_table = bxt_pinctrl_acpi_match, 1065 1048 .pm = &bxt_pinctrl_pm_ops, 1066 1049 }, 1050 + .id_table = bxt_pinctrl_platform_ids, 1067 1051 }; 1068 1052 1069 1053 static int __init bxt_pinctrl_init(void) ··· 1082 1064 MODULE_AUTHOR("Mika Westerberg <mika.westerberg@linux.intel.com>"); 1083 1065 MODULE_DESCRIPTION("Intel Broxton SoC pinctrl/GPIO driver"); 1084 1066 MODULE_LICENSE("GPL v2"); 1067 + MODULE_ALIAS("platform:broxton-pinctrl");
+119 -36
drivers/pinctrl/intel/pinctrl-cherryview.c
··· 160 160 * @pctldev: Pointer to the pin controller device 161 161 * @chip: GPIO chip in this pin controller 162 162 * @regs: MMIO registers 163 - * @lock: Lock to serialize register accesses 164 163 * @intr_lines: Stores mapping between 16 HW interrupt wires and GPIO 165 164 * offset (in GPIO number space) 166 165 * @community: Community this pinctrl instance represents ··· 173 174 struct pinctrl_dev *pctldev; 174 175 struct gpio_chip chip; 175 176 void __iomem *regs; 176 - raw_spinlock_t lock; 177 177 unsigned intr_lines[16]; 178 178 const struct chv_community *community; 179 179 u32 saved_intmask; ··· 655 657 &southeast_community, 656 658 }; 657 659 660 + /* 661 + * Lock to serialize register accesses 662 + * 663 + * Due to a silicon issue, a shared lock must be used to prevent 664 + * concurrent accesses across the 4 GPIO controllers. 665 + * 666 + * See Intel Atom Z8000 Processor Series Specification Update (Rev. 005), 667 + * errata #CHT34, for further information. 668 + */ 669 + static DEFINE_RAW_SPINLOCK(chv_lock); 670 + 658 671 static void __iomem *chv_padreg(struct chv_pinctrl *pctrl, unsigned offset, 659 672 unsigned reg) 660 673 { ··· 727 718 u32 ctrl0, ctrl1; 728 719 bool locked; 729 720 730 - raw_spin_lock_irqsave(&pctrl->lock, flags); 721 + raw_spin_lock_irqsave(&chv_lock, flags); 731 722 732 723 ctrl0 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0)); 733 724 ctrl1 = readl(chv_padreg(pctrl, offset, CHV_PADCTRL1)); 734 725 locked = chv_pad_locked(pctrl, offset); 735 726 736 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 727 + raw_spin_unlock_irqrestore(&chv_lock, flags); 737 728 738 729 if (ctrl0 & CHV_PADCTRL0_GPIOEN) { 739 730 seq_puts(s, "GPIO "); ··· 796 787 797 788 grp = &pctrl->community->groups[group]; 798 789 799 - raw_spin_lock_irqsave(&pctrl->lock, flags); 790 + raw_spin_lock_irqsave(&chv_lock, flags); 800 791 801 792 /* Check first that the pad is not locked */ 802 793 for (i = 0; i < grp->npins; i++) { 803 794 if (chv_pad_locked(pctrl, grp->pins[i])) { 804 795 dev_warn(pctrl->dev, "unable to set mode for locked pin %u\n", 805 796 grp->pins[i]); 806 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 797 + raw_spin_unlock_irqrestore(&chv_lock, flags); 807 798 return -EBUSY; 808 799 } 809 800 } ··· 846 837 pin, altfunc->mode, altfunc->invert_oe ? "" : "not "); 847 838 } 848 839 849 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 840 + raw_spin_unlock_irqrestore(&chv_lock, flags); 850 841 851 842 return 0; 852 843 } ··· 860 851 void __iomem *reg; 861 852 u32 value; 862 853 863 - raw_spin_lock_irqsave(&pctrl->lock, flags); 854 + raw_spin_lock_irqsave(&chv_lock, flags); 864 855 865 856 if (chv_pad_locked(pctrl, offset)) { 866 857 value = readl(chv_padreg(pctrl, offset, CHV_PADCTRL0)); 867 858 if (!(value & CHV_PADCTRL0_GPIOEN)) { 868 859 /* Locked so cannot enable */ 869 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 860 + raw_spin_unlock_irqrestore(&chv_lock, flags); 870 861 return -EBUSY; 871 862 } 872 863 } else { ··· 906 897 chv_writel(value, reg); 907 898 } 908 899 909 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 900 + raw_spin_unlock_irqrestore(&chv_lock, flags); 910 901 911 902 return 0; 912 903 } ··· 920 911 void __iomem *reg; 921 912 u32 value; 922 913 923 - raw_spin_lock_irqsave(&pctrl->lock, flags); 914 + raw_spin_lock_irqsave(&chv_lock, flags); 924 915 925 916 reg = chv_padreg(pctrl, offset, CHV_PADCTRL0); 926 917 value = readl(reg) & ~CHV_PADCTRL0_GPIOEN; 927 918 chv_writel(value, reg); 928 919 929 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 920 + raw_spin_unlock_irqrestore(&chv_lock, flags); 930 921 } 931 922 932 923 static int chv_gpio_set_direction(struct pinctrl_dev *pctldev, ··· 938 929 unsigned long flags; 939 930 u32 ctrl0; 940 931 941 - raw_spin_lock_irqsave(&pctrl->lock, flags); 932 + raw_spin_lock_irqsave(&chv_lock, flags); 942 933 943 934 ctrl0 = readl(reg) & ~CHV_PADCTRL0_GPIOCFG_MASK; 944 935 if (input) ··· 947 938 ctrl0 |= CHV_PADCTRL0_GPIOCFG_GPO << CHV_PADCTRL0_GPIOCFG_SHIFT; 948 939 chv_writel(ctrl0, reg); 949 940 950 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 941 + raw_spin_unlock_irqrestore(&chv_lock, flags); 951 942 952 943 return 0; 953 944 } ··· 972 963 u16 arg = 0; 973 964 u32 term; 974 965 975 - raw_spin_lock_irqsave(&pctrl->lock, flags); 966 + raw_spin_lock_irqsave(&chv_lock, flags); 976 967 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 977 968 ctrl1 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL1)); 978 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 969 + raw_spin_unlock_irqrestore(&chv_lock, flags); 979 970 980 971 term = (ctrl0 & CHV_PADCTRL0_TERM_MASK) >> CHV_PADCTRL0_TERM_SHIFT; 981 972 ··· 1049 1040 unsigned long flags; 1050 1041 u32 ctrl0, pull; 1051 1042 1052 - raw_spin_lock_irqsave(&pctrl->lock, flags); 1043 + raw_spin_lock_irqsave(&chv_lock, flags); 1053 1044 ctrl0 = readl(reg); 1054 1045 1055 1046 switch (param) { ··· 1072 1063 pull = CHV_PADCTRL0_TERM_20K << CHV_PADCTRL0_TERM_SHIFT; 1073 1064 break; 1074 1065 default: 1075 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1066 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1076 1067 return -EINVAL; 1077 1068 } 1078 1069 ··· 1090 1081 pull = CHV_PADCTRL0_TERM_20K << CHV_PADCTRL0_TERM_SHIFT; 1091 1082 break; 1092 1083 default: 1093 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1084 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1094 1085 return -EINVAL; 1095 1086 } 1096 1087 ··· 1098 1089 break; 1099 1090 1100 1091 default: 1101 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1092 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1102 1093 return -EINVAL; 1103 1094 } 1104 1095 1105 1096 chv_writel(ctrl0, reg); 1106 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1097 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1098 + 1099 + return 0; 1100 + } 1101 + 1102 + static int chv_config_set_oden(struct chv_pinctrl *pctrl, unsigned int pin, 1103 + bool enable) 1104 + { 1105 + void __iomem *reg = chv_padreg(pctrl, pin, CHV_PADCTRL1); 1106 + unsigned long flags; 1107 + u32 ctrl1; 1108 + 1109 + raw_spin_lock_irqsave(&chv_lock, flags); 1110 + ctrl1 = readl(reg); 1111 + 1112 + if (enable) 1113 + ctrl1 |= CHV_PADCTRL1_ODEN; 1114 + else 1115 + ctrl1 &= ~CHV_PADCTRL1_ODEN; 1116 + 1117 + chv_writel(ctrl1, reg); 1118 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1107 1119 1108 1120 return 0; 1109 1121 } ··· 1153 1123 return ret; 1154 1124 break; 1155 1125 1126 + case PIN_CONFIG_DRIVE_PUSH_PULL: 1127 + ret = chv_config_set_oden(pctrl, pin, false); 1128 + if (ret) 1129 + return ret; 1130 + break; 1131 + 1132 + case PIN_CONFIG_DRIVE_OPEN_DRAIN: 1133 + ret = chv_config_set_oden(pctrl, pin, true); 1134 + if (ret) 1135 + return ret; 1136 + break; 1137 + 1156 1138 default: 1157 1139 return -ENOTSUPP; 1158 1140 } ··· 1176 1134 return 0; 1177 1135 } 1178 1136 1137 + static int chv_config_group_get(struct pinctrl_dev *pctldev, 1138 + unsigned int group, 1139 + unsigned long *config) 1140 + { 1141 + const unsigned int *pins; 1142 + unsigned int npins; 1143 + int ret; 1144 + 1145 + ret = chv_get_group_pins(pctldev, group, &pins, &npins); 1146 + if (ret) 1147 + return ret; 1148 + 1149 + ret = chv_config_get(pctldev, pins[0], config); 1150 + if (ret) 1151 + return ret; 1152 + 1153 + return 0; 1154 + } 1155 + 1156 + static int chv_config_group_set(struct pinctrl_dev *pctldev, 1157 + unsigned int group, unsigned long *configs, 1158 + unsigned int num_configs) 1159 + { 1160 + const unsigned int *pins; 1161 + unsigned int npins; 1162 + int i, ret; 1163 + 1164 + ret = chv_get_group_pins(pctldev, group, &pins, &npins); 1165 + if (ret) 1166 + return ret; 1167 + 1168 + for (i = 0; i < npins; i++) { 1169 + ret = chv_config_set(pctldev, pins[i], configs, num_configs); 1170 + if (ret) 1171 + return ret; 1172 + } 1173 + 1174 + return 0; 1175 + } 1176 + 1179 1177 static const struct pinconf_ops chv_pinconf_ops = { 1180 1178 .is_generic = true, 1181 1179 .pin_config_set = chv_config_set, 1182 1180 .pin_config_get = chv_config_get, 1181 + .pin_config_group_get = chv_config_group_get, 1182 + .pin_config_group_set = chv_config_group_set, 1183 1183 }; 1184 1184 1185 1185 static struct pinctrl_desc chv_pinctrl_desc = { ··· 1244 1160 unsigned long flags; 1245 1161 u32 ctrl0, cfg; 1246 1162 1247 - raw_spin_lock_irqsave(&pctrl->lock, flags); 1163 + raw_spin_lock_irqsave(&chv_lock, flags); 1248 1164 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1249 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1165 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1250 1166 1251 1167 cfg = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK; 1252 1168 cfg >>= CHV_PADCTRL0_GPIOCFG_SHIFT; ··· 1264 1180 void __iomem *reg; 1265 1181 u32 ctrl0; 1266 1182 1267 - raw_spin_lock_irqsave(&pctrl->lock, flags); 1183 + raw_spin_lock_irqsave(&chv_lock, flags); 1268 1184 1269 1185 reg = chv_padreg(pctrl, pin, CHV_PADCTRL0); 1270 1186 ctrl0 = readl(reg); ··· 1276 1192 1277 1193 chv_writel(ctrl0, reg); 1278 1194 1279 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1195 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1280 1196 } 1281 1197 1282 1198 static int chv_gpio_get_direction(struct gpio_chip *chip, unsigned offset) ··· 1286 1202 u32 ctrl0, direction; 1287 1203 unsigned long flags; 1288 1204 1289 - raw_spin_lock_irqsave(&pctrl->lock, flags); 1205 + raw_spin_lock_irqsave(&chv_lock, flags); 1290 1206 ctrl0 = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1291 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1207 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1292 1208 1293 1209 direction = ctrl0 & CHV_PADCTRL0_GPIOCFG_MASK; 1294 1210 direction >>= CHV_PADCTRL0_GPIOCFG_SHIFT; ··· 1326 1242 int pin = chv_gpio_offset_to_pin(pctrl, irqd_to_hwirq(d)); 1327 1243 u32 intr_line; 1328 1244 1329 - raw_spin_lock(&pctrl->lock); 1245 + raw_spin_lock(&chv_lock); 1330 1246 1331 1247 intr_line = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1332 1248 intr_line &= CHV_PADCTRL0_INTSEL_MASK; 1333 1249 intr_line >>= CHV_PADCTRL0_INTSEL_SHIFT; 1334 1250 chv_writel(BIT(intr_line), pctrl->regs + CHV_INTSTAT); 1335 1251 1336 - raw_spin_unlock(&pctrl->lock); 1252 + raw_spin_unlock(&chv_lock); 1337 1253 } 1338 1254 1339 1255 static void chv_gpio_irq_mask_unmask(struct irq_data *d, bool mask) ··· 1344 1260 u32 value, intr_line; 1345 1261 unsigned long flags; 1346 1262 1347 - raw_spin_lock_irqsave(&pctrl->lock, flags); 1263 + raw_spin_lock_irqsave(&chv_lock, flags); 1348 1264 1349 1265 intr_line = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1350 1266 intr_line &= CHV_PADCTRL0_INTSEL_MASK; ··· 1357 1273 value |= BIT(intr_line); 1358 1274 chv_writel(value, pctrl->regs + CHV_INTMASK); 1359 1275 1360 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1276 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1361 1277 } 1362 1278 1363 1279 static void chv_gpio_irq_mask(struct irq_data *d) ··· 1391 1307 unsigned long flags; 1392 1308 u32 intsel, value; 1393 1309 1394 - raw_spin_lock_irqsave(&pctrl->lock, flags); 1310 + raw_spin_lock_irqsave(&chv_lock, flags); 1395 1311 intsel = readl(chv_padreg(pctrl, pin, CHV_PADCTRL0)); 1396 1312 intsel &= CHV_PADCTRL0_INTSEL_MASK; 1397 1313 intsel >>= CHV_PADCTRL0_INTSEL_SHIFT; ··· 1406 1322 irq_set_handler_locked(d, handler); 1407 1323 pctrl->intr_lines[intsel] = offset; 1408 1324 } 1409 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1325 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1410 1326 } 1411 1327 1412 1328 chv_gpio_irq_unmask(d); ··· 1422 1338 unsigned long flags; 1423 1339 u32 value; 1424 1340 1425 - raw_spin_lock_irqsave(&pctrl->lock, flags); 1341 + raw_spin_lock_irqsave(&chv_lock, flags); 1426 1342 1427 1343 /* 1428 1344 * Pins which can be used as shared interrupt are configured in ··· 1471 1387 else if (type & IRQ_TYPE_LEVEL_MASK) 1472 1388 irq_set_handler_locked(d, handle_level_irq); 1473 1389 1474 - raw_spin_unlock_irqrestore(&pctrl->lock, flags); 1390 + raw_spin_unlock_irqrestore(&chv_lock, flags); 1475 1391 1476 1392 return 0; 1477 1393 } ··· 1583 1499 if (i == ARRAY_SIZE(chv_communities)) 1584 1500 return -ENODEV; 1585 1501 1586 - raw_spin_lock_init(&pctrl->lock); 1587 1502 pctrl->dev = &pdev->dev; 1588 1503 1589 1504 #ifdef CONFIG_PM_SLEEP
+29 -23
drivers/pinctrl/intel/pinctrl-intel.c
··· 89 89 */ 90 90 struct intel_pinctrl { 91 91 struct device *dev; 92 - spinlock_t lock; 92 + raw_spinlock_t lock; 93 93 struct pinctrl_desc pctldesc; 94 94 struct pinctrl_dev *pctldev; 95 95 struct gpio_chip chip; ··· 318 318 unsigned long flags; 319 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 324 * All pins in the groups needs to be accessible and writable ··· 326 326 */ 327 327 for (i = 0; i < grp->npins; i++) { 328 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 330 return -EBUSY; 331 331 } 332 332 } ··· 345 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 350 return 0; 351 351 } ··· 359 359 unsigned long flags; 360 360 u32 value; 361 361 362 - spin_lock_irqsave(&pctrl->lock, flags); 362 + raw_spin_lock_irqsave(&pctrl->lock, flags); 363 363 364 364 if (!intel_pad_usable(pctrl, pin)) { 365 - spin_unlock_irqrestore(&pctrl->lock, flags); 365 + raw_spin_unlock_irqrestore(&pctrl->lock, flags); 366 366 return -EBUSY; 367 367 } 368 368 ··· 377 377 value |= PADCFG0_GPIOTXDIS; 378 378 writel(value, padcfg0); 379 379 380 - spin_unlock_irqrestore(&pctrl->lock, flags); 380 + raw_spin_unlock_irqrestore(&pctrl->lock, flags); 381 381 382 382 return 0; 383 383 } ··· 391 391 unsigned long flags; 392 392 u32 value; 393 393 394 - spin_lock_irqsave(&pctrl->lock, flags); 394 + raw_spin_lock_irqsave(&pctrl->lock, flags); 395 395 396 396 padcfg0 = intel_get_padcfg(pctrl, pin, PADCFG0); 397 397 ··· 402 402 value &= ~PADCFG0_GPIOTXDIS; 403 403 writel(value, padcfg0); 404 404 405 - spin_unlock_irqrestore(&pctrl->lock, flags); 405 + raw_spin_unlock_irqrestore(&pctrl->lock, flags); 406 406 407 407 return 0; 408 408 } ··· 490 490 int ret = 0; 491 491 u32 value; 492 492 493 - spin_lock_irqsave(&pctrl->lock, flags); 493 + raw_spin_lock_irqsave(&pctrl->lock, flags); 494 494 495 495 padcfg1 = intel_get_padcfg(pctrl, pin, PADCFG1); 496 496 value = readl(padcfg1); ··· 544 544 if (!ret) 545 545 writel(value, padcfg1); 546 546 547 - spin_unlock_irqrestore(&pctrl->lock, flags); 547 + raw_spin_unlock_irqrestore(&pctrl->lock, flags); 548 548 549 549 return ret; 550 550 } ··· 611 611 unsigned long flags; 612 612 u32 padcfg0; 613 613 614 - spin_lock_irqsave(&pctrl->lock, flags); 614 + raw_spin_lock_irqsave(&pctrl->lock, flags); 615 615 padcfg0 = readl(reg); 616 616 if (value) 617 617 padcfg0 |= PADCFG0_GPIOTXSTATE; 618 618 else 619 619 padcfg0 &= ~PADCFG0_GPIOTXSTATE; 620 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 651 const struct intel_community *community; 652 652 unsigned pin = irqd_to_hwirq(d); 653 653 654 - spin_lock(&pctrl->lock); 654 + raw_spin_lock(&pctrl->lock); 655 655 656 656 community = intel_get_community(pctrl, pin); 657 657 if (community) { ··· 662 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 668 668 static void intel_gpio_irq_enable(struct irq_data *d) ··· 673 673 unsigned pin = irqd_to_hwirq(d); 674 674 unsigned long flags; 675 675 676 - spin_lock_irqsave(&pctrl->lock, flags); 676 + raw_spin_lock_irqsave(&pctrl->lock, flags); 677 677 678 678 community = intel_get_community(pctrl, pin); 679 679 if (community) { ··· 691 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 697 697 static void intel_gpio_irq_mask_unmask(struct irq_data *d, bool mask) ··· 702 702 unsigned pin = irqd_to_hwirq(d); 703 703 unsigned long flags; 704 704 705 - spin_lock_irqsave(&pctrl->lock, flags); 705 + raw_spin_lock_irqsave(&pctrl->lock, flags); 706 706 707 707 community = intel_get_community(pctrl, pin); 708 708 if (community) { ··· 721 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 727 727 static void intel_gpio_irq_mask(struct irq_data *d) ··· 757 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 762 value = readl(reg); 763 763 ··· 784 784 else if (type & IRQ_TYPE_LEVEL_MASK) 785 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 789 return 0; 790 790 } ··· 796 796 const struct intel_community *community; 797 797 unsigned pin = irqd_to_hwirq(d); 798 798 unsigned padno, gpp, gpp_offset; 799 + unsigned long flags; 799 800 u32 gpe_en; 800 801 801 802 community = intel_get_community(pctrl, pin); 802 803 if (!community) 803 804 return -EINVAL; 805 + 806 + raw_spin_lock_irqsave(&pctrl->lock, flags); 804 807 805 808 padno = pin_to_padno(community, pin); 806 809 gpp = padno / community->gpp_size; ··· 823 820 else 824 821 gpe_en &= ~BIT(gpp_offset); 825 822 writel(gpe_en, community->regs + GPI_GPE_EN + gpp * 4); 823 + 824 + raw_spin_unlock_irqrestore(&pctrl->lock, flags); 826 825 827 826 dev_dbg(pctrl->dev, "%sable wake for pin %u\n", on ? "en" : "dis", pin); 828 827 return 0; ··· 924 919 * to the irq directly) because on some platforms several GPIO 925 920 * controllers share the same interrupt line. 926 921 */ 927 - ret = devm_request_irq(pctrl->dev, irq, intel_gpio_irq, IRQF_SHARED, 922 + ret = devm_request_irq(pctrl->dev, irq, intel_gpio_irq, 923 + IRQF_SHARED | IRQF_NO_THREAD, 928 924 dev_name(pctrl->dev), pctrl); 929 925 if (ret) { 930 926 dev_err(pctrl->dev, "failed to request interrupt\n"); ··· 1001 995 1002 996 pctrl->dev = &pdev->dev; 1003 997 pctrl->soc = soc_data; 1004 - spin_lock_init(&pctrl->lock); 998 + raw_spin_lock_init(&pctrl->lock); 1005 999 1006 1000 /* 1007 1001 * Make a copy of the communities which we can use to hold pointers
+911
drivers/pinctrl/intel/pinctrl-merrifield.c
··· 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 + */ 65 + struct 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 + 88 + static 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 + 343 + static const unsigned int mrfld_sdio_pins[] = { 50, 51, 52, 53, 54, 55, 56 }; 344 + static const unsigned int mrfld_spi5_pins[] = { 90, 91, 92, 93, 94, 95, 96 }; 345 + static const unsigned int mrfld_uart0_pins[] = { 124, 125, 126, 127 }; 346 + static const unsigned int mrfld_uart1_pins[] = { 128, 129, 130, 131 }; 347 + static const unsigned int mrfld_uart2_pins[] = { 132, 133, 134, 135 }; 348 + static const unsigned int mrfld_pwm0_pins[] = { 144 }; 349 + static const unsigned int mrfld_pwm1_pins[] = { 145 }; 350 + static const unsigned int mrfld_pwm2_pins[] = { 132 }; 351 + static const unsigned int mrfld_pwm3_pins[] = { 133 }; 352 + 353 + static 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 + 365 + static const char * const mrfld_sdio_groups[] = { "sdio_grp" }; 366 + static const char * const mrfld_spi5_groups[] = { "spi5_grp" }; 367 + static const char * const mrfld_uart0_groups[] = { "uart0_grp" }; 368 + static const char * const mrfld_uart1_groups[] = { "uart1_grp" }; 369 + static const char * const mrfld_uart2_groups[] = { "uart2_grp" }; 370 + static const char * const mrfld_pwm0_groups[] = { "pwm0_grp" }; 371 + static const char * const mrfld_pwm1_groups[] = { "pwm1_grp" }; 372 + static const char * const mrfld_pwm2_groups[] = { "pwm2_grp" }; 373 + static const char * const mrfld_pwm3_groups[] = { "pwm3_grp" }; 374 + 375 + static 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 + 387 + static 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 + */ 420 + struct 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 + 439 + static 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 + 456 + static 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 + 467 + static 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 + 480 + static 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 + 487 + static 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 + 495 + static 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 + 505 + static 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 + 529 + static 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 + 536 + static 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 + 543 + static 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 + 551 + static 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 + 563 + static 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 + 578 + static 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 + 607 + static 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 + 626 + static 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 + 634 + static 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 + 716 + static 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 + 789 + static 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 + 816 + static 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 + 822 + static 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 + 829 + static 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 + 889 + static struct platform_driver mrfld_pinctrl_driver = { 890 + .probe = mrfld_pinctrl_probe, 891 + .driver = { 892 + .name = "pinctrl-merrifield", 893 + }, 894 + }; 895 + 896 + static int __init mrfld_pinctrl_init(void) 897 + { 898 + return platform_driver_register(&mrfld_pinctrl_driver); 899 + } 900 + subsys_initcall(mrfld_pinctrl_init); 901 + 902 + static void __exit mrfld_pinctrl_exit(void) 903 + { 904 + platform_driver_unregister(&mrfld_pinctrl_driver); 905 + } 906 + module_exit(mrfld_pinctrl_exit); 907 + 908 + MODULE_AUTHOR("Andy Shevchenko <andriy.shevchenko@linux.intel.com>"); 909 + MODULE_DESCRIPTION("Intel Merrifield SoC pinctrl driver"); 910 + MODULE_LICENSE("GPL v2"); 911 + MODULE_ALIAS("platform:pinctrl-merrifield");
+2 -2
drivers/pinctrl/mediatek/pinctrl-mtk-common.c
··· 1183 1183 } 1184 1184 1185 1185 const struct dev_pm_ops mtk_eint_pm_ops = { 1186 - .suspend = mtk_eint_suspend, 1187 - .resume = mtk_eint_resume, 1186 + .suspend_noirq = mtk_eint_suspend, 1187 + .resume_noirq = mtk_eint_resume, 1188 1188 }; 1189 1189 1190 1190 static void mtk_eint_ack(struct irq_data *d)
+162 -1
drivers/pinctrl/meson/pinctrl-meson-gxbb.c
··· 147 147 MESON_PIN(GPIO_TEST_N, EE_OFF), 148 148 }; 149 149 150 + static 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 + }; 155 + static const unsigned int emmc_clk_pins[] = { PIN(BOOT_8, EE_OFF) }; 156 + static const unsigned int emmc_cmd_pins[] = { PIN(BOOT_10, EE_OFF) }; 157 + static const unsigned int emmc_ds_pins[] = { PIN(BOOT_15, EE_OFF) }; 158 + 159 + static const unsigned int sdcard_d0_pins[] = { PIN(CARD_1, EE_OFF) }; 160 + static const unsigned int sdcard_d1_pins[] = { PIN(CARD_0, EE_OFF) }; 161 + static const unsigned int sdcard_d2_pins[] = { PIN(CARD_5, EE_OFF) }; 162 + static const unsigned int sdcard_d3_pins[] = { PIN(CARD_4, EE_OFF) }; 163 + static const unsigned int sdcard_cmd_pins[] = { PIN(CARD_3, EE_OFF) }; 164 + static const unsigned int sdcard_clk_pins[] = { PIN(CARD_2, EE_OFF) }; 165 + 166 + static const unsigned int uart_tx_a_pins[] = { PIN(GPIOX_12, EE_OFF) }; 167 + static const unsigned int uart_rx_a_pins[] = { PIN(GPIOX_13, EE_OFF) }; 168 + static const unsigned int uart_cts_a_pins[] = { PIN(GPIOX_14, EE_OFF) }; 169 + static const unsigned int uart_rts_a_pins[] = { PIN(GPIOX_15, EE_OFF) }; 170 + 171 + static const unsigned int uart_tx_b_pins[] = { PIN(GPIODV_24, EE_OFF) }; 172 + static const unsigned int uart_rx_b_pins[] = { PIN(GPIODV_25, EE_OFF) }; 173 + static const unsigned int uart_cts_b_pins[] = { PIN(GPIODV_26, EE_OFF) }; 174 + static const unsigned int uart_rts_b_pins[] = { PIN(GPIODV_27, EE_OFF) }; 175 + 176 + static const unsigned int uart_tx_c_pins[] = { PIN(GPIOY_13, EE_OFF) }; 177 + static const unsigned int uart_rx_c_pins[] = { PIN(GPIOY_14, EE_OFF) }; 178 + static const unsigned int uart_cts_c_pins[] = { PIN(GPIOX_11, EE_OFF) }; 179 + static const unsigned int uart_rts_c_pins[] = { PIN(GPIOX_12, EE_OFF) }; 180 + 181 + static const unsigned int eth_mdio_pins[] = { PIN(GPIOZ_0, EE_OFF) }; 182 + static const unsigned int eth_mdc_pins[] = { PIN(GPIOZ_1, EE_OFF) }; 183 + static const unsigned int eth_clk_rx_clk_pins[] = { PIN(GPIOZ_2, EE_OFF) }; 184 + static const unsigned int eth_rx_dv_pins[] = { PIN(GPIOZ_3, EE_OFF) }; 185 + static const unsigned int eth_rxd0_pins[] = { PIN(GPIOZ_4, EE_OFF) }; 186 + static const unsigned int eth_rxd1_pins[] = { PIN(GPIOZ_5, EE_OFF) }; 187 + static const unsigned int eth_rxd2_pins[] = { PIN(GPIOZ_6, EE_OFF) }; 188 + static const unsigned int eth_rxd3_pins[] = { PIN(GPIOZ_7, EE_OFF) }; 189 + static const unsigned int eth_rgmii_tx_clk_pins[] = { PIN(GPIOZ_8, EE_OFF) }; 190 + static const unsigned int eth_tx_en_pins[] = { PIN(GPIOZ_9, EE_OFF) }; 191 + static const unsigned int eth_txd0_pins[] = { PIN(GPIOZ_10, EE_OFF) }; 192 + static const unsigned int eth_txd1_pins[] = { PIN(GPIOZ_11, EE_OFF) }; 193 + static const unsigned int eth_txd2_pins[] = { PIN(GPIOZ_12, EE_OFF) }; 194 + static const unsigned int eth_txd3_pins[] = { PIN(GPIOZ_13, EE_OFF) }; 195 + 150 196 static const struct pinctrl_pin_desc meson_gxbb_aobus_pins[] = { 151 197 MESON_PIN(GPIOAO_0, 0), 152 198 MESON_PIN(GPIOAO_1, 0), ··· 214 168 static const unsigned int uart_rx_ao_a_pins[] = { PIN(GPIOAO_1, 0) }; 215 169 static const unsigned int uart_cts_ao_a_pins[] = { PIN(GPIOAO_2, 0) }; 216 170 static const unsigned int uart_rts_ao_a_pins[] = { PIN(GPIOAO_3, 0) }; 171 + static const unsigned int uart_tx_ao_b_pins[] = { PIN(GPIOAO_0, 0) }; 172 + static const unsigned int uart_rx_ao_b_pins[] = { PIN(GPIOAO_1, 0), 173 + PIN(GPIOAO_5, 0) }; 174 + static const unsigned int uart_cts_ao_b_pins[] = { PIN(GPIOAO_2, 0) }; 175 + static const unsigned int uart_rts_ao_b_pins[] = { PIN(GPIOAO_3, 0) }; 176 + 177 + static const unsigned int i2c_sck_ao_pins[] = {PIN(GPIOAO_4, 0) }; 178 + static const unsigned int i2c_sda_ao_pins[] = {PIN(GPIOAO_5, 0) }; 179 + static const unsigned int i2c_slave_sck_ao_pins[] = {PIN(GPIOAO_4, 0) }; 180 + static const unsigned int i2c_slave_sda_ao_pins[] = {PIN(GPIOAO_5, 0) }; 217 181 218 182 static struct meson_pmx_group meson_gxbb_periphs_groups[] = { 219 183 GPIO_GROUP(GPIOZ_0, EE_OFF), ··· 353 297 GPIO_GROUP(GPIOCLK_3, EE_OFF), 354 298 355 299 GPIO_GROUP(GPIO_TEST_N, EE_OFF), 300 + 301 + /* Bank X */ 302 + GROUP(uart_tx_a, 4, 13), 303 + GROUP(uart_rx_a, 4, 12), 304 + GROUP(uart_cts_a, 4, 11), 305 + GROUP(uart_rts_a, 4, 10), 306 + 307 + /* Bank Y */ 308 + GROUP(uart_cts_c, 1, 19), 309 + GROUP(uart_rts_c, 1, 18), 310 + GROUP(uart_tx_c, 1, 17), 311 + GROUP(uart_rx_c, 1, 16), 312 + 313 + /* Bank Z */ 314 + GROUP(eth_mdio, 6, 1), 315 + GROUP(eth_mdc, 6, 0), 316 + GROUP(eth_clk_rx_clk, 6, 13), 317 + GROUP(eth_rx_dv, 6, 12), 318 + GROUP(eth_rxd0, 6, 11), 319 + GROUP(eth_rxd1, 6, 10), 320 + GROUP(eth_rxd2, 6, 9), 321 + GROUP(eth_rxd3, 6, 8), 322 + GROUP(eth_rgmii_tx_clk, 6, 7), 323 + GROUP(eth_tx_en, 6, 6), 324 + GROUP(eth_txd0, 6, 5), 325 + GROUP(eth_txd1, 6, 4), 326 + GROUP(eth_txd2, 6, 3), 327 + GROUP(eth_txd3, 6, 2), 328 + 329 + /* Bank DV */ 330 + GROUP(uart_tx_b, 2, 29), 331 + GROUP(uart_rx_b, 2, 28), 332 + GROUP(uart_cts_b, 2, 27), 333 + GROUP(uart_rts_b, 2, 26), 334 + 335 + /* Bank BOOT */ 336 + GROUP(emmc_nand_d07, 4, 30), 337 + GROUP(emmc_clk, 4, 18), 338 + GROUP(emmc_cmd, 4, 19), 339 + GROUP(emmc_ds, 4, 31), 340 + 341 + /* Bank CARD */ 342 + GROUP(sdcard_d1, 2, 14), 343 + GROUP(sdcard_d0, 2, 15), 344 + GROUP(sdcard_d3, 2, 12), 345 + GROUP(sdcard_d2, 2, 13), 346 + GROUP(sdcard_cmd, 2, 10), 347 + GROUP(sdcard_clk, 2, 11), 356 348 }; 357 349 358 350 static struct meson_pmx_group meson_gxbb_aobus_groups[] = { ··· 420 316 GPIO_GROUP(GPIOAO_13, 0), 421 317 422 318 /* bank AO */ 319 + GROUP(uart_tx_ao_b, 0, 26), 320 + GROUP(uart_rx_ao_b, 0, 25), 423 321 GROUP(uart_tx_ao_a, 0, 12), 424 322 GROUP(uart_rx_ao_a, 0, 11), 425 323 GROUP(uart_cts_ao_a, 0, 10), 426 324 GROUP(uart_rts_ao_a, 0, 9), 325 + GROUP(uart_cts_ao_b, 0, 8), 326 + GROUP(uart_rts_ao_b, 0, 7), 327 + GROUP(i2c_sck_ao, 0, 6), 328 + GROUP(i2c_sda_ao, 0, 5), 329 + GROUP(i2c_slave_sck_ao, 0, 2), 330 + GROUP(i2c_slave_sda_ao, 0, 1), 427 331 }; 428 332 429 333 static const char * const gpio_periphs_groups[] = { ··· 471 359 "GPIO_TEST_N", 472 360 }; 473 361 362 + static const char * const emmc_groups[] = { 363 + "emmc_nand_d07", "emmc_clk", "emmc_cmd", "emmc_ds", 364 + }; 365 + 366 + static const char * const sdcard_groups[] = { 367 + "sdcard_d0", "sdcard_d1", "sdcard_d2", "sdcard_d3", 368 + "sdcard_cmd", "sdcard_clk", 369 + }; 370 + 371 + static const char * const uart_a_groups[] = { 372 + "uart_tx_a", "uart_rx_a", "uart_cts_a", "uart_rts_a", 373 + }; 374 + 375 + static const char * const uart_b_groups[] = { 376 + "uart_tx_b", "uart_rx_b", "uart_cts_b", "uart_rts_b", 377 + }; 378 + 379 + static const char * const uart_c_groups[] = { 380 + "uart_tx_c", "uart_rx_c", "uart_cts_c", "uart_rts_c", 381 + }; 382 + 383 + static const char * const eth_groups[] = { 384 + "eth_mdio", "eth_mdc", "eth_clk_rx_clk", "eth_rx_dv", 385 + "eth_rxd0", "eth_rxd1", "eth_rxd2", "eth_rxd3", 386 + "eth_rgmii_tx_clk", "eth_tx_en", 387 + "eth_txd0", "eth_txd1", "eth_txd2", "eth_txd3", 388 + }; 389 + 474 390 static const char * const gpio_aobus_groups[] = { 475 391 "GPIOAO_0", "GPIOAO_1", "GPIOAO_2", "GPIOAO_3", "GPIOAO_4", 476 392 "GPIOAO_5", "GPIOAO_6", "GPIOAO_7", "GPIOAO_8", "GPIOAO_9", ··· 506 366 }; 507 367 508 368 static const char * const uart_ao_groups[] = { 509 - "uart_tx_ao_a", "uart_rx_ao_a", "uart_cts_ao_a", "uart_rts_ao_a" 369 + "uart_tx_ao_a", "uart_rx_ao_a", "uart_cts_ao_a", "uart_rts_ao_a", 370 + }; 371 + 372 + static const char * const uart_ao_b_groups[] = { 373 + "uart_tx_ao_b", "uart_rx_ao_b", "uart_cts_ao_b", "uart_rts_ao_b", 374 + }; 375 + 376 + static const char * const i2c_ao_groups[] = { 377 + "i2c_sdk_ao", "i2c_sda_ao", 378 + }; 379 + 380 + static const char * const i2c_slave_ao_groups[] = { 381 + "i2c_slave_sdk_ao", "i2c_slave_sda_ao", 510 382 }; 511 383 512 384 static struct meson_pmx_func meson_gxbb_periphs_functions[] = { 513 385 FUNCTION(gpio_periphs), 386 + FUNCTION(emmc), 387 + FUNCTION(sdcard), 388 + FUNCTION(uart_a), 389 + FUNCTION(uart_b), 390 + FUNCTION(uart_c), 391 + FUNCTION(eth), 514 392 }; 515 393 516 394 static struct meson_pmx_func meson_gxbb_aobus_functions[] = { 517 395 FUNCTION(gpio_aobus), 518 396 FUNCTION(uart_ao), 397 + FUNCTION(uart_ao_b), 398 + FUNCTION(i2c_ao), 399 + FUNCTION(i2c_slave_ao), 519 400 }; 520 401 521 402 static struct meson_bank meson_gxbb_periphs_banks[] = {
+43 -42
drivers/pinctrl/mvebu/pinctrl-kirkwood.c
··· 168 168 MPP_VAR_FUNCTION(0x0, "gpo", NULL, V(1, 1, 1, 1, 1, 1)), 169 169 MPP_VAR_FUNCTION(0x1, "nand", "io1", V(1, 1, 1, 1, 1, 1))), 170 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 172 MPP_VAR_FUNCTION(0x1, "ts", "mp0", V(0, 0, 1, 1, 1, 0)), 173 173 MPP_VAR_FUNCTION(0x2, "tdm", "tx0ql", V(0, 0, 1, 1, 1, 0)), 174 174 MPP_VAR_FUNCTION(0x3, "ge1", "txd0", V(0, 1, 1, 1, 1, 0)), 175 175 MPP_VAR_FUNCTION(0x4, "audio", "spdifi", V(0, 0, 1, 1, 1, 0)), 176 176 MPP_VAR_FUNCTION(0x5, "sata1", "act", V(0, 0, 1, 1, 1, 0)), 177 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 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 181 MPP_VAR_FUNCTION(0x1, "ts", "mp1", V(0, 0, 1, 1, 1, 0)), 182 182 MPP_VAR_FUNCTION(0x2, "tdm", "rx0ql", V(0, 0, 1, 1, 1, 0)), 183 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 185 MPP_VAR_FUNCTION(0x4, "audio", "spdifo", V(0, 0, 1, 1, 1, 0)), 186 186 MPP_VAR_FUNCTION(0x5, "sata0", "act", V(0, 1, 1, 1, 1, 0)), 187 187 MPP_VAR_FUNCTION(0xb, "lcd", "d1", V(0, 0, 0, 0, 1, 0))), 188 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 190 MPP_VAR_FUNCTION(0x1, "ts", "mp2", V(0, 0, 1, 1, 1, 0)), 191 191 MPP_VAR_FUNCTION(0x2, "tdm", "tx2ql", V(0, 0, 1, 1, 1, 0)), 192 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 194 MPP_VAR_FUNCTION(0x4, "audio", "rmclk", V(0, 0, 1, 1, 1, 0)), 195 195 MPP_VAR_FUNCTION(0x5, "sata1", "prsnt", V(0, 0, 1, 1, 1, 0)), 196 196 MPP_VAR_FUNCTION(0xb, "lcd", "d2", V(0, 0, 0, 0, 1, 0))), 197 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 199 MPP_VAR_FUNCTION(0x1, "ts", "mp3", V(0, 0, 1, 1, 1, 0)), 200 200 MPP_VAR_FUNCTION(0x2, "tdm", "rx2ql", V(0, 0, 1, 1, 1, 0)), 201 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 203 MPP_VAR_FUNCTION(0x4, "audio", "bclk", V(0, 0, 1, 1, 1, 0)), 204 204 MPP_VAR_FUNCTION(0x5, "sata0", "prsnt", V(0, 1, 1, 1, 1, 0)), 205 205 MPP_VAR_FUNCTION(0xb, "lcd", "d3", V(0, 0, 0, 0, 1, 0))), 206 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 208 MPP_VAR_FUNCTION(0x1, "ts", "mp4", V(0, 0, 1, 1, 1, 0)), 209 209 MPP_VAR_FUNCTION(0x2, "tdm", "spi-cs0", V(0, 0, 1, 1, 1, 0)), 210 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 212 MPP_VAR_FUNCTION(0x4, "audio", "sdo", V(0, 0, 1, 1, 1, 0)), 213 213 MPP_VAR_FUNCTION(0xb, "lcd", "d4", V(0, 0, 0, 0, 1, 0))), 214 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 216 MPP_VAR_FUNCTION(0x1, "ts", "mp5", V(0, 0, 1, 1, 1, 0)), 217 217 MPP_VAR_FUNCTION(0x2, "tdm", "spi-sck", V(0, 0, 1, 1, 1, 0)), 218 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 220 MPP_VAR_FUNCTION(0x4, "audio", "lrclk", V(0, 0, 1, 1, 1, 0)), 221 221 MPP_VAR_FUNCTION(0xb, "lcd", "d5", V(0, 0, 0, 0, 1, 0))), 222 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 224 MPP_VAR_FUNCTION(0x1, "ts", "mp6", V(0, 0, 1, 1, 1, 0)), 225 225 MPP_VAR_FUNCTION(0x2, "tdm", "spi-miso", V(0, 0, 1, 1, 1, 0)), 226 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 228 MPP_VAR_FUNCTION(0x4, "audio", "mclk", V(0, 0, 1, 1, 1, 0)), 229 229 MPP_VAR_FUNCTION(0xb, "lcd", "d6", V(0, 0, 0, 0, 1, 0))), 230 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 232 MPP_VAR_FUNCTION(0x1, "ts", "mp7", V(0, 0, 1, 1, 1, 0)), 233 233 MPP_VAR_FUNCTION(0x2, "tdm", "spi-mosi", V(0, 0, 1, 1, 1, 0)), 234 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 236 MPP_VAR_FUNCTION(0x4, "audio", "sdi", V(0, 0, 1, 1, 1, 0)), 237 237 MPP_VAR_FUNCTION(0xb, "lcd", "d7", V(0, 0, 0, 0, 1, 0))), 238 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 240 MPP_VAR_FUNCTION(0x1, "ts", "mp8", V(0, 0, 1, 1, 1, 0)), 241 241 MPP_VAR_FUNCTION(0x2, "tdm", "int", V(0, 0, 1, 1, 1, 0)), 242 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 244 MPP_VAR_FUNCTION(0x4, "audio", "extclk", V(0, 0, 1, 1, 1, 0)), 245 245 MPP_VAR_FUNCTION(0xb, "lcd", "d8", V(0, 0, 0, 0, 1, 0))), 246 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 248 MPP_VAR_FUNCTION(0x1, "ts", "mp9", V(0, 0, 1, 1, 1, 0)), 249 249 MPP_VAR_FUNCTION(0x2, "tdm", "rst", V(0, 0, 1, 1, 1, 0)), 250 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 252 MPP_VAR_FUNCTION(0xb, "lcd", "d9", V(0, 0, 0, 0, 1, 0))), 253 253 MPP_MODE(30, 254 254 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 1, 1, 1, 1, 0)), ··· 280 280 MPP_VAR_FUNCTION(0x5, "sata1", "act", V(0, 0, 0, 1, 1, 0)), 281 281 MPP_VAR_FUNCTION(0xb, "lcd", "d14", V(0, 0, 0, 0, 1, 0))), 282 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 284 MPP_VAR_FUNCTION(0x2, "tdm", "tx0ql", V(0, 0, 1, 1, 1, 0)), 285 285 MPP_VAR_FUNCTION(0x3, "ge1", "rxerr", V(0, 1, 1, 1, 1, 0)), 286 286 MPP_VAR_FUNCTION(0x5, "sata0", "act", V(0, 1, 1, 1, 1, 0)), 287 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 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 291 MPP_VAR_FUNCTION(0x1, "ts", "mp0", V(0, 0, 0, 1, 1, 0)), 292 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 294 MPP_VAR_FUNCTION(0xb, "twsi1", "sda", V(0, 0, 0, 0, 1, 0))), 295 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 297 MPP_VAR_FUNCTION(0x1, "ts", "mp1", V(0, 0, 0, 1, 1, 0)), 298 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 300 MPP_VAR_FUNCTION(0xb, "twsi1", "sck", V(0, 0, 0, 0, 1, 0))), 301 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 303 MPP_VAR_FUNCTION(0x1, "ts", "mp2", V(0, 0, 0, 1, 1, 0)), 304 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 306 MPP_VAR_FUNCTION(0xb, "lcd", "d18", V(0, 0, 0, 0, 1, 0))), 307 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 309 MPP_VAR_FUNCTION(0x1, "ts", "mp3", V(0, 0, 0, 1, 1, 0)), 310 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 312 MPP_VAR_FUNCTION(0xb, "lcd", "d19", V(0, 0, 0, 0, 1, 0))), 313 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 315 MPP_VAR_FUNCTION(0x1, "ts", "mp4", V(0, 0, 0, 1, 1, 0)), 316 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 318 MPP_VAR_FUNCTION(0xb, "lcd", "d20", V(0, 0, 0, 0, 1, 0))), 319 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 321 MPP_VAR_FUNCTION(0x1, "ts", "mp5", V(0, 0, 0, 1, 1, 0)), 322 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 324 MPP_VAR_FUNCTION(0xb, "lcd", "d21", V(0, 0, 0, 0, 1, 0))), 325 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 327 MPP_VAR_FUNCTION(0x1, "ts", "mp6", V(0, 0, 0, 1, 1, 0)), 328 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 330 MPP_VAR_FUNCTION(0xb, "lcd", "d22", V(0, 0, 0, 0, 1, 0))), 331 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 333 MPP_VAR_FUNCTION(0x1, "ts", "mp7", V(0, 0, 0, 1, 1, 0)), 334 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 336 MPP_VAR_FUNCTION(0xb, "lcd", "d23", V(0, 0, 0, 0, 1, 0))), 337 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 339 MPP_VAR_FUNCTION(0x1, "ts", "mp8", V(0, 0, 0, 1, 1, 0)), 340 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 342 MPP_VAR_FUNCTION(0xb, "lcd", "clk", V(0, 0, 0, 0, 1, 0))), 343 343 MPP_MODE(45, 344 344 MPP_VAR_FUNCTION(0x0, "gpio", NULL, V(0, 0, 0, 1, 1, 1)), ··· 371 371 }; 372 372 373 373 static 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 377 377 static 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 381 382 static struct mvebu_mpp_ctrl mv88f619x_mpp_controls[] = {
-96
drivers/pinctrl/nomadik/pinctrl-nomadik.c
··· 1033 1033 #define nmk_gpio_dbg_show NULL 1034 1034 #endif 1035 1035 1036 - void 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 - 1050 - void 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 - */ 1073 - void 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 - 1094 - void 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 - */ 1120 - void 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 1037 * We will allocate memory for the state container using devm* allocators 1134 1038 * binding to the first device reaching this point, it doesn't matter if
+17 -5
drivers/pinctrl/pinconf-generic.c
··· 53 53 struct seq_file *s, const char *gname, 54 54 unsigned pin, 55 55 const struct pin_config_item *items, 56 - int nitems) 56 + int nitems, int *print_sep) 57 57 { 58 58 int i; 59 59 ··· 75 75 seq_printf(s, "ERROR READING CONFIG SETTING %d ", i); 76 76 continue; 77 77 } 78 - /* Space between multiple configs */ 79 - seq_puts(s, " "); 78 + /* comma between multiple configs */ 79 + if (*print_sep) 80 + seq_puts(s, ", "); 81 + *print_sep = 1; 80 82 seq_puts(s, items[i].display); 81 83 /* Print unit if available */ 82 84 if (items[i].has_arg) { ··· 107 105 const char *gname, unsigned pin) 108 106 { 109 107 const struct pinconf_ops *ops = pctldev->desc->confops; 108 + int print_sep = 0; 110 109 111 110 if (!ops->is_generic) 112 111 return; 113 112 114 113 /* generic parameters */ 115 114 pinconf_generic_dump_one(pctldev, s, gname, pin, conf_items, 116 - ARRAY_SIZE(conf_items)); 115 + ARRAY_SIZE(conf_items), &print_sep); 117 116 /* driver-specific parameters */ 118 117 if (pctldev->desc->num_custom_params && 119 118 pctldev->desc->custom_conf_items) 120 119 pinconf_generic_dump_one(pctldev, s, gname, pin, 121 120 pctldev->desc->custom_conf_items, 122 - pctldev->desc->num_custom_params); 121 + pctldev->desc->num_custom_params, 122 + &print_sep); 123 123 } 124 124 125 125 void pinconf_generic_dump_config(struct pinctrl_dev *pctldev, ··· 394 390 return ret; 395 391 } 396 392 EXPORT_SYMBOL_GPL(pinconf_generic_dt_node_to_map); 393 + 394 + void pinconf_generic_dt_free_map(struct pinctrl_dev *pctldev, 395 + struct pinctrl_map *map, 396 + unsigned num_maps) 397 + { 398 + pinctrl_utils_free_map(pctldev, map, num_maps); 399 + } 400 + EXPORT_SYMBOL_GPL(pinconf_generic_dt_free_map); 397 401 398 402 #endif
+3 -5
drivers/pinctrl/pinconf.c
··· 258 258 case PIN_MAP_TYPE_CONFIGS_PIN: 259 259 desc = pin_desc_get(setting->pctldev, 260 260 setting->data.configs.group_or_pin); 261 - seq_printf(s, "pin %s (%d)", 262 - desc->name ? desc->name : "unnamed", 261 + seq_printf(s, "pin %s (%d)", desc->name, 263 262 setting->data.configs.group_or_pin); 264 263 break; 265 264 case PIN_MAP_TYPE_CONFIGS_GROUP: ··· 310 311 if (desc == NULL) 311 312 continue; 312 313 313 - seq_printf(s, "pin %d (%s):", pin, 314 - desc->name ? desc->name : "unnamed"); 314 + seq_printf(s, "pin %d (%s): ", pin, desc->name); 315 315 316 316 pinconf_dump_pin(pctldev, s, pin); 317 317 ··· 347 349 while (selector < ngroups) { 348 350 const char *gname = pctlops->get_group_name(pctldev, selector); 349 351 350 - seq_printf(s, "%u (%s):", selector, gname); 352 + seq_printf(s, "%u (%s): ", selector, gname); 351 353 pinconf_dump_group(pctldev, s, selector, gname); 352 354 seq_printf(s, "\n"); 353 355
+5 -21
drivers/pinctrl/pinctrl-at91-pio4.c
··· 20 20 #include <linux/gpio.h> 21 21 #include <linux/interrupt.h> 22 22 #include <linux/io.h> 23 - #include <linux/module.h> 23 + #include <linux/init.h> 24 24 #include <linux/of.h> 25 25 #include <linux/platform_device.h> 26 26 #include <linux/pinctrl/pinconf.h> ··· 421 421 return 0; 422 422 } 423 423 424 - struct atmel_group *atmel_pctl_find_group_by_pin(struct pinctrl_dev *pctldev, 425 - unsigned pin) 424 + static struct atmel_group * 425 + atmel_pctl_find_group_by_pin(struct pinctrl_dev *pctldev, unsigned pin) 426 426 { 427 427 struct atmel_pioctrl *atmel_pioctrl = pinctrl_dev_get_drvdata(pctldev); 428 428 int i; ··· 879 879 /* sentinel */ 880 880 } 881 881 }; 882 - MODULE_DEVICE_TABLE(of, atmel_pctrl_of_match); 883 882 884 883 static int atmel_pinctrl_probe(struct platform_device *pdev) 885 884 { ··· 1073 1074 return ret; 1074 1075 } 1075 1076 1076 - int atmel_pinctrl_remove(struct platform_device *pdev) 1077 - { 1078 - struct atmel_pioctrl *atmel_pioctrl = platform_get_drvdata(pdev); 1079 - 1080 - irq_domain_remove(atmel_pioctrl->irq_domain); 1081 - clk_disable_unprepare(atmel_pioctrl->clk); 1082 - gpiochip_remove(atmel_pioctrl->gpio_chip); 1083 - 1084 - return 0; 1085 - } 1086 - 1087 1077 static struct platform_driver atmel_pinctrl_driver = { 1088 1078 .driver = { 1089 1079 .name = "pinctrl-at91-pio4", 1090 1080 .of_match_table = atmel_pctrl_of_match, 1091 1081 .pm = &atmel_pctrl_pm_ops, 1082 + .suppress_bind_attrs = true, 1092 1083 }, 1093 1084 .probe = atmel_pinctrl_probe, 1094 - .remove = atmel_pinctrl_remove, 1095 1085 }; 1096 - module_platform_driver(atmel_pinctrl_driver); 1097 - 1098 - MODULE_AUTHOR(Ludovic Desroches <ludovic.desroches@atmel.com>); 1099 - MODULE_DESCRIPTION("Atmel PIO4 pinctrl driver"); 1100 - MODULE_LICENSE("GPL v2"); 1086 + builtin_platform_driver(atmel_pinctrl_driver);
+1 -12
drivers/pinctrl/pinctrl-at91.c
··· 9 9 #include <linux/clk.h> 10 10 #include <linux/err.h> 11 11 #include <linux/init.h> 12 - #include <linux/module.h> 13 12 #include <linux/of.h> 14 13 #include <linux/of_device.h> 15 14 #include <linux/of_address.h> ··· 188 189 struct at91_pinctrl_mux_ops *ops; 189 190 }; 190 191 191 - static const inline struct at91_pin_group *at91_pinctrl_find_group_by_name( 192 + static inline const struct at91_pin_group *at91_pinctrl_find_group_by_name( 192 193 const struct at91_pinctrl *info, 193 194 const char *name) 194 195 { ··· 1817 1818 return platform_register_drivers(drivers, ARRAY_SIZE(drivers)); 1818 1819 } 1819 1820 arch_initcall(at91_pinctrl_init); 1820 - 1821 - static void __exit at91_pinctrl_exit(void) 1822 - { 1823 - platform_unregister_drivers(drivers, ARRAY_SIZE(drivers)); 1824 - } 1825 - 1826 - module_exit(at91_pinctrl_exit); 1827 - MODULE_AUTHOR("Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>"); 1828 - MODULE_DESCRIPTION("Atmel AT91 pinctrl driver"); 1829 - MODULE_LICENSE("GPL v2");
+3 -13
drivers/pinctrl/pinctrl-digicolor.c
··· 15 15 * - Pin pad configuration (pull up/down, strength) 16 16 */ 17 17 18 - #include <linux/module.h> 18 + #include <linux/init.h> 19 19 #include <linux/platform_device.h> 20 20 #include <linux/of.h> 21 21 #include <linux/of_device.h> ··· 335 335 return dc_gpiochip_add(pmap, pdev->dev.of_node); 336 336 } 337 337 338 - static 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 - 347 338 static const struct of_device_id dc_pinctrl_ids[] = { 348 339 { .compatible = "cnxt,cx92755-pinctrl" }, 349 340 { /* sentinel */ } 350 341 }; 351 - MODULE_DEVICE_TABLE(of, dc_pinctrl_ids); 352 342 353 343 static struct platform_driver dc_pinctrl_driver = { 354 344 .driver = { 355 345 .name = DRIVER_NAME, 356 346 .of_match_table = dc_pinctrl_ids, 347 + .suppress_bind_attrs = true, 357 348 }, 358 349 .probe = dc_pinctrl_probe, 359 - .remove = dc_pinctrl_remove, 360 350 }; 361 - module_platform_driver(dc_pinctrl_driver); 351 + builtin_platform_driver(dc_pinctrl_driver);
+3 -17
drivers/pinctrl/pinctrl-lpc18xx.c
··· 11 11 #include <linux/bitops.h> 12 12 #include <linux/clk.h> 13 13 #include <linux/io.h> 14 - #include <linux/module.h> 14 + #include <linux/init.h> 15 15 #include <linux/of.h> 16 16 #include <linux/of_device.h> 17 17 #include <linux/pinctrl/pinctrl.h> ··· 1365 1365 return 0; 1366 1366 } 1367 1367 1368 - static 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 - 1377 1368 static const struct of_device_id lpc18xx_scu_match[] = { 1378 1369 { .compatible = "nxp,lpc1850-scu" }, 1379 1370 {}, 1380 1371 }; 1381 - MODULE_DEVICE_TABLE(of, lpc18xx_scu_match); 1382 1372 1383 1373 static struct platform_driver lpc18xx_scu_driver = { 1384 1374 .probe = lpc18xx_scu_probe, 1385 - .remove = lpc18xx_scu_remove, 1386 1375 .driver = { 1387 1376 .name = "lpc18xx-scu", 1388 1377 .of_match_table = lpc18xx_scu_match, 1378 + .suppress_bind_attrs = true, 1389 1379 }, 1390 1380 }; 1391 - module_platform_driver(lpc18xx_scu_driver); 1392 - 1393 - MODULE_AUTHOR("Joachim Eastwood <manabian@gmail.com>"); 1394 - MODULE_DESCRIPTION("Pinctrl driver for NXP LPC18xx/43xx SCU"); 1395 - MODULE_LICENSE("GPL v2"); 1381 + builtin_platform_driver(lpc18xx_scu_driver);
+673
drivers/pinctrl/pinctrl-max77620.c
··· 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 + 31 + enum max77620_pin_ppdrv { 32 + MAX77620_PIN_UNCONFIG_DRV, 33 + MAX77620_PIN_OD_DRV, 34 + MAX77620_PIN_PP_DRV, 35 + }; 36 + 37 + enum 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 + 46 + struct max77620_pin_function { 47 + const char *name; 48 + const char * const *groups; 49 + unsigned int ngroups; 50 + int mux_option; 51 + }; 52 + 53 + static 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 + 75 + enum 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 + 85 + struct 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 + 92 + struct max77620_pin_info { 93 + enum max77620_pin_ppdrv drv_type; 94 + int pull_config; 95 + }; 96 + 97 + struct 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 + 106 + struct 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 + 121 + static 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 + 132 + static 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 + 151 + static 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 + 169 + static 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 + 180 + static 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 + 187 + static 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 + 195 + static 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 + 207 + static 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 + 215 + static 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 + 222 + static 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 + 230 + static 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 + 243 + static 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 + 267 + static 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 + 274 + static 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 + 325 + static 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 + 341 + static 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 + 397 + static 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 + 541 + static const struct pinconf_ops max77620_pinconf_ops = { 542 + .pin_config_get = max77620_pinconf_get, 543 + .pin_config_set = max77620_pinconf_set, 544 + }; 545 + 546 + static struct pinctrl_desc max77620_pinctrl_desc = { 547 + .pctlops = &max77620_pinctrl_ops, 548 + .pmxops = &max77620_pinmux_ops, 549 + .confops = &max77620_pinconf_ops, 550 + }; 551 + 552 + static 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 601 + static 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 + 607 + static 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 + 613 + static 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 + 629 + static 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 + 646 + static const struct dev_pm_ops max77620_pinctrl_pm_ops = { 647 + SET_SYSTEM_SLEEP_PM_OPS( 648 + max77620_pinctrl_suspend, max77620_pinctrl_resume) 649 + }; 650 + 651 + static const struct platform_device_id max77620_pinctrl_devtype[] = { 652 + { .name = "max77620-pinctrl", }, 653 + { .name = "max20024-pinctrl", }, 654 + {}, 655 + }; 656 + MODULE_DEVICE_TABLE(platform, max77620_pinctrl_devtype); 657 + 658 + static 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 + 667 + module_platform_driver(max77620_pinctrl_driver); 668 + 669 + MODULE_DESCRIPTION("MAX77620/MAX20024 pin control driver"); 670 + MODULE_AUTHOR("Chaitanya Bandi<bandik@nvidia.com>"); 671 + MODULE_AUTHOR("Laxman Dewangan<ldewangan@nvidia.com>"); 672 + MODULE_ALIAS("platform:max77620-pinctrl"); 673 + MODULE_LICENSE("GPL v2");
+846
drivers/pinctrl/pinctrl-oxnas.c
··· 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 + 61 + struct oxnas_function { 62 + const char *name; 63 + const char * const *groups; 64 + unsigned int ngroups; 65 + }; 66 + 67 + struct oxnas_pin_group { 68 + const char *name; 69 + unsigned int pin; 70 + unsigned int bank; 71 + struct oxnas_desc_function *functions; 72 + }; 73 + 74 + struct oxnas_desc_function { 75 + const char *name; 76 + unsigned int fct; 77 + }; 78 + 79 + struct 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 + 86 + struct 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 + 100 + static 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 + 138 + static 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 + 150 + static 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 + 168 + static 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 + 188 + static 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 + 285 + static 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 + 291 + static 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 + 298 + static 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 + 306 + static 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 + 319 + static 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 + 327 + static 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 + 334 + static const char * 335 + oxnas_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 + 342 + static 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 + 355 + static 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 + 405 + static 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 + 435 + static 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 + 444 + static 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 + 455 + static 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 + 463 + static 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 + 475 + static 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 + 487 + static 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 + 501 + static 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 + 510 + static 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 + 541 + static 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 + 578 + static 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 + 584 + static 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 + 592 + static 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 + 601 + static 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 + 617 + static 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 + 633 + static 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 + 643 + static 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 + 653 + static 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 + 697 + static struct oxnas_gpio_bank oxnas_gpio_banks[] = { 698 + GPIO_BANK(0), 699 + GPIO_BANK(1), 700 + }; 701 + 702 + static 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 + 741 + static 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 + 808 + static const struct of_device_id oxnas_pinctrl_of_match[] = { 809 + { .compatible = "oxsemi,ox810se-pinctrl", }, 810 + { }, 811 + }; 812 + 813 + static 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 + 822 + static const struct of_device_id oxnas_gpio_of_match[] = { 823 + { .compatible = "oxsemi,ox810se-gpio", }, 824 + { }, 825 + }; 826 + 827 + static 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 + 836 + static int __init oxnas_gpio_register(void) 837 + { 838 + return platform_driver_register(&oxnas_gpio_driver); 839 + } 840 + arch_initcall(oxnas_gpio_register); 841 + 842 + static int __init oxnas_pinctrl_register(void) 843 + { 844 + return platform_driver_register(&oxnas_pinctrl_driver); 845 + } 846 + arch_initcall(oxnas_pinctrl_register);
+2 -2
drivers/pinctrl/pinctrl-rockchip.c
··· 360 360 .reg_stride = 4, 361 361 }; 362 362 363 - static const inline struct rockchip_pin_group *pinctrl_name_to_group( 363 + static inline const struct rockchip_pin_group *pinctrl_name_to_group( 364 364 const struct rockchip_pinctrl *info, 365 365 const char *name) 366 366 { ··· 2007 2007 irq_gc_mask_clr_bit(d); 2008 2008 } 2009 2009 2010 - void rockchip_irq_gc_mask_set_bit(struct irq_data *d) 2010 + static void rockchip_irq_gc_mask_set_bit(struct irq_data *d) 2011 2011 { 2012 2012 struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); 2013 2013 struct rockchip_pin_bank *bank = gc->private;
+1 -1
drivers/pinctrl/pinctrl-st.c
··· 844 844 return 0; 845 845 } 846 846 847 - static const inline struct st_pctl_group *st_pctl_find_group_by_name( 847 + static inline const struct st_pctl_group *st_pctl_find_group_by_name( 848 848 const struct st_pinctrl *info, const char *name) 849 849 { 850 850 int i;
+1 -1
drivers/pinctrl/pinctrl-u300.c
··· 670 670 * u300_pmx_registers - the array of registers read/written for each pinmux 671 671 * shunt setting 672 672 */ 673 - const u32 u300_pmx_registers[] = { 673 + static const u32 u300_pmx_registers[] = { 674 674 U300_SYSCON_PMC1LR, 675 675 U300_SYSCON_PMC1HR, 676 676 U300_SYSCON_PMC2R,
+48 -24
drivers/pinctrl/pinctrl-xway.c
··· 1616 1616 1617 1617 /* xway xr9 series (DEPRECATED: Use XWAY xRX100/xRX200 Family) */ 1618 1618 static struct pinctrl_xway_soc xr9_pinctrl = { 1619 - XR9_MAX_PIN, xway_mfp, 1620 - xway_grps, ARRAY_SIZE(xway_grps), 1621 - xrx_funcs, ARRAY_SIZE(xrx_funcs), 1622 - xway_exin_pin_map, 6 1619 + .pin_count = XR9_MAX_PIN, 1620 + .mfp = xway_mfp, 1621 + .grps = xway_grps, 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 1629 /* XWAY AMAZON Family */ 1626 1630 static struct pinctrl_xway_soc ase_pinctrl = { 1627 - ASE_MAX_PIN, ase_mfp, 1628 - ase_grps, ARRAY_SIZE(ase_grps), 1629 - ase_funcs, ARRAY_SIZE(ase_funcs), 1630 - ase_exin_pin_map, 3 1631 + .pin_count = ASE_MAX_PIN, 1632 + .mfp = ase_mfp, 1633 + .grps = ase_grps, 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 1641 /* XWAY DANUBE Family */ 1634 1642 static struct pinctrl_xway_soc danube_pinctrl = { 1635 - DANUBE_MAX_PIN, danube_mfp, 1636 - danube_grps, ARRAY_SIZE(danube_grps), 1637 - danube_funcs, ARRAY_SIZE(danube_funcs), 1638 - danube_exin_pin_map, 3 1643 + .pin_count = DANUBE_MAX_PIN, 1644 + .mfp = danube_mfp, 1645 + .grps = danube_grps, 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 1653 /* XWAY xRX100 Family */ 1642 1654 static struct pinctrl_xway_soc xrx100_pinctrl = { 1643 - XRX100_MAX_PIN, xrx100_mfp, 1644 - xrx100_grps, ARRAY_SIZE(xrx100_grps), 1645 - xrx100_funcs, ARRAY_SIZE(xrx100_funcs), 1646 - xrx100_exin_pin_map, 6 1655 + .pin_count = XRX100_MAX_PIN, 1656 + .mfp = xrx100_mfp, 1657 + .grps = xrx100_grps, 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 1665 /* XWAY xRX200 Family */ 1650 1666 static struct pinctrl_xway_soc xrx200_pinctrl = { 1651 - XRX200_MAX_PIN, xrx200_mfp, 1652 - xrx200_grps, ARRAY_SIZE(xrx200_grps), 1653 - xrx200_funcs, ARRAY_SIZE(xrx200_funcs), 1654 - xrx200_exin_pin_map, 6 1667 + .pin_count = XRX200_MAX_PIN, 1668 + .mfp = xrx200_mfp, 1669 + .grps = xrx200_grps, 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 1677 /* XWAY xRX300 Family */ 1658 1678 static struct pinctrl_xway_soc xrx300_pinctrl = { 1659 - XRX300_MAX_PIN, xrx300_mfp, 1660 - xrx300_grps, ARRAY_SIZE(xrx300_grps), 1661 - xrx300_funcs, ARRAY_SIZE(xrx300_funcs), 1662 - xrx300_exin_pin_map, 5 1679 + .pin_count = XRX300_MAX_PIN, 1680 + .mfp = xrx300_mfp, 1681 + .grps = xrx300_grps, 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 1665 1689 static struct pinctrl_gpio_range xway_gpio_range = {
+1 -12
drivers/pinctrl/pinctrl-zynq.c
··· 20 20 */ 21 21 #include <linux/io.h> 22 22 #include <linux/mfd/syscon.h> 23 - #include <linux/module.h> 23 + #include <linux/init.h> 24 24 #include <linux/of.h> 25 25 #include <linux/platform_device.h> 26 26 #include <linux/pinctrl/pinctrl.h> ··· 1210 1210 { .compatible = "xlnx,pinctrl-zynq" }, 1211 1211 { } 1212 1212 }; 1213 - MODULE_DEVICE_TABLE(of, zynq_pinctrl_of_match); 1214 1213 1215 1214 static struct platform_driver zynq_pinctrl_driver = { 1216 1215 .driver = { ··· 1224 1225 return platform_driver_register(&zynq_pinctrl_driver); 1225 1226 } 1226 1227 arch_initcall(zynq_pinctrl_init); 1227 - 1228 - static void __exit zynq_pinctrl_exit(void) 1229 - { 1230 - platform_driver_unregister(&zynq_pinctrl_driver); 1231 - } 1232 - module_exit(zynq_pinctrl_exit); 1233 - 1234 - MODULE_AUTHOR("Sören Brinkmann <soren.brinkmann@xilinx.com>"); 1235 - MODULE_DESCRIPTION("Xilinx Zynq pinctrl driver"); 1236 - MODULE_LICENSE("GPL");
+5 -11
drivers/pinctrl/pinmux.c
··· 256 256 /* Conjure some name stating what chip and pin this is taken by */ 257 257 owner = kasprintf(GFP_KERNEL, "%s:%d", range->name, gpio); 258 258 if (!owner) 259 - return -EINVAL; 259 + return -ENOMEM; 260 260 261 261 ret = pin_request(pctldev, pin, owner, range); 262 262 if (ret < 0) ··· 606 606 if (pmxops->strict) { 607 607 if (desc->mux_owner) 608 608 seq_printf(s, "pin %d (%s): device %s%s", 609 - pin, 610 - desc->name ? desc->name : "unnamed", 611 - desc->mux_owner, 609 + pin, desc->name, desc->mux_owner, 612 610 is_hog ? " (HOG)" : ""); 613 611 else if (desc->gpio_owner) 614 612 seq_printf(s, "pin %d (%s): GPIO %s", 615 - pin, 616 - desc->name ? desc->name : "unnamed", 617 - desc->gpio_owner); 613 + pin, desc->name, desc->gpio_owner); 618 614 else 619 615 seq_printf(s, "pin %d (%s): UNCLAIMED", 620 - pin, 621 - desc->name ? desc->name : "unnamed"); 616 + pin, desc->name); 622 617 } else { 623 618 /* For non-strict controllers */ 624 - seq_printf(s, "pin %d (%s): %s %s%s", pin, 625 - desc->name ? desc->name : "unnamed", 619 + seq_printf(s, "pin %d (%s): %s %s%s", pin, desc->name, 626 620 desc->mux_owner ? desc->mux_owner 627 621 : "(MUX UNCLAIMED)", 628 622 desc->gpio_owner ? desc->gpio_owner
+8
drivers/pinctrl/qcom/Kconfig
··· 55 55 This is the pinctrl, pinmux, pinconf and gpiolib driver for the 56 56 Qualcomm TLMM block found in the Qualcomm 8960 platform. 57 57 58 + config 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 + 58 66 config PINCTRL_MSM8X74 59 67 tristate "Qualcomm 8x74 pin controller driver" 60 68 depends on GPIOLIB && OF
+1
drivers/pinctrl/qcom/Makefile
··· 10 10 obj-$(CONFIG_PINCTRL_MSM8916) += pinctrl-msm8916.o 11 11 obj-$(CONFIG_PINCTRL_MSM8996) += pinctrl-msm8996.o 12 12 obj-$(CONFIG_PINCTRL_QDF2XXX) += pinctrl-qdf2xxx.o 13 + obj-$(CONFIG_PINCTRL_MDM9615) += pinctrl-mdm9615.o 13 14 obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-gpio.o 14 15 obj-$(CONFIG_PINCTRL_QCOM_SPMI_PMIC) += pinctrl-spmi-mpp.o 15 16 obj-$(CONFIG_PINCTRL_QCOM_SSBI_PMIC) += pinctrl-ssbi-gpio.o
+483
drivers/pinctrl/qcom/pinctrl-mdm9615.c
··· 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 + 24 + static 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 } 117 + DECLARE_MSM_GPIO_PINS(0); 118 + DECLARE_MSM_GPIO_PINS(1); 119 + DECLARE_MSM_GPIO_PINS(2); 120 + DECLARE_MSM_GPIO_PINS(3); 121 + DECLARE_MSM_GPIO_PINS(4); 122 + DECLARE_MSM_GPIO_PINS(5); 123 + DECLARE_MSM_GPIO_PINS(6); 124 + DECLARE_MSM_GPIO_PINS(7); 125 + DECLARE_MSM_GPIO_PINS(8); 126 + DECLARE_MSM_GPIO_PINS(9); 127 + DECLARE_MSM_GPIO_PINS(10); 128 + DECLARE_MSM_GPIO_PINS(11); 129 + DECLARE_MSM_GPIO_PINS(12); 130 + DECLARE_MSM_GPIO_PINS(13); 131 + DECLARE_MSM_GPIO_PINS(14); 132 + DECLARE_MSM_GPIO_PINS(15); 133 + DECLARE_MSM_GPIO_PINS(16); 134 + DECLARE_MSM_GPIO_PINS(17); 135 + DECLARE_MSM_GPIO_PINS(18); 136 + DECLARE_MSM_GPIO_PINS(19); 137 + DECLARE_MSM_GPIO_PINS(20); 138 + DECLARE_MSM_GPIO_PINS(21); 139 + DECLARE_MSM_GPIO_PINS(22); 140 + DECLARE_MSM_GPIO_PINS(23); 141 + DECLARE_MSM_GPIO_PINS(24); 142 + DECLARE_MSM_GPIO_PINS(25); 143 + DECLARE_MSM_GPIO_PINS(26); 144 + DECLARE_MSM_GPIO_PINS(27); 145 + DECLARE_MSM_GPIO_PINS(28); 146 + DECLARE_MSM_GPIO_PINS(29); 147 + DECLARE_MSM_GPIO_PINS(30); 148 + DECLARE_MSM_GPIO_PINS(31); 149 + DECLARE_MSM_GPIO_PINS(32); 150 + DECLARE_MSM_GPIO_PINS(33); 151 + DECLARE_MSM_GPIO_PINS(34); 152 + DECLARE_MSM_GPIO_PINS(35); 153 + DECLARE_MSM_GPIO_PINS(36); 154 + DECLARE_MSM_GPIO_PINS(37); 155 + DECLARE_MSM_GPIO_PINS(38); 156 + DECLARE_MSM_GPIO_PINS(39); 157 + DECLARE_MSM_GPIO_PINS(40); 158 + DECLARE_MSM_GPIO_PINS(41); 159 + DECLARE_MSM_GPIO_PINS(42); 160 + DECLARE_MSM_GPIO_PINS(43); 161 + DECLARE_MSM_GPIO_PINS(44); 162 + DECLARE_MSM_GPIO_PINS(45); 163 + DECLARE_MSM_GPIO_PINS(46); 164 + DECLARE_MSM_GPIO_PINS(47); 165 + DECLARE_MSM_GPIO_PINS(48); 166 + DECLARE_MSM_GPIO_PINS(49); 167 + DECLARE_MSM_GPIO_PINS(50); 168 + DECLARE_MSM_GPIO_PINS(51); 169 + DECLARE_MSM_GPIO_PINS(52); 170 + DECLARE_MSM_GPIO_PINS(53); 171 + DECLARE_MSM_GPIO_PINS(54); 172 + DECLARE_MSM_GPIO_PINS(55); 173 + DECLARE_MSM_GPIO_PINS(56); 174 + DECLARE_MSM_GPIO_PINS(57); 175 + DECLARE_MSM_GPIO_PINS(58); 176 + DECLARE_MSM_GPIO_PINS(59); 177 + DECLARE_MSM_GPIO_PINS(60); 178 + DECLARE_MSM_GPIO_PINS(61); 179 + DECLARE_MSM_GPIO_PINS(62); 180 + DECLARE_MSM_GPIO_PINS(63); 181 + DECLARE_MSM_GPIO_PINS(64); 182 + DECLARE_MSM_GPIO_PINS(65); 183 + DECLARE_MSM_GPIO_PINS(66); 184 + DECLARE_MSM_GPIO_PINS(67); 185 + DECLARE_MSM_GPIO_PINS(68); 186 + DECLARE_MSM_GPIO_PINS(69); 187 + DECLARE_MSM_GPIO_PINS(70); 188 + DECLARE_MSM_GPIO_PINS(71); 189 + DECLARE_MSM_GPIO_PINS(72); 190 + DECLARE_MSM_GPIO_PINS(73); 191 + DECLARE_MSM_GPIO_PINS(74); 192 + DECLARE_MSM_GPIO_PINS(75); 193 + DECLARE_MSM_GPIO_PINS(76); 194 + DECLARE_MSM_GPIO_PINS(77); 195 + DECLARE_MSM_GPIO_PINS(78); 196 + DECLARE_MSM_GPIO_PINS(79); 197 + DECLARE_MSM_GPIO_PINS(80); 198 + DECLARE_MSM_GPIO_PINS(81); 199 + DECLARE_MSM_GPIO_PINS(82); 200 + DECLARE_MSM_GPIO_PINS(83); 201 + DECLARE_MSM_GPIO_PINS(84); 202 + DECLARE_MSM_GPIO_PINS(85); 203 + DECLARE_MSM_GPIO_PINS(86); 204 + DECLARE_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 + 255 + enum 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 + 271 + static 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 + 287 + static const char * const gsbi2_i2c_groups[] = { 288 + "gpio4", "gpio5" 289 + }; 290 + 291 + static const char * const gsbi3_groups[] = { 292 + "gpio8", "gpio9", "gpio10", "gpio11" 293 + }; 294 + 295 + static const char * const gsbi4_groups[] = { 296 + "gpio12", "gpio13", "gpio14", "gpio15" 297 + }; 298 + 299 + static const char * const gsbi5_i2c_groups[] = { 300 + "gpio16", "gpio17" 301 + }; 302 + 303 + static const char * const gsbi5_uart_groups[] = { 304 + "gpio18", "gpio19" 305 + }; 306 + 307 + static const char * const sdc2_groups[] = { 308 + "gpio25", "gpio26", "gpio27", "gpio28", "gpio29", "gpio30", 309 + }; 310 + 311 + static const char * const ebi2_lcdc_groups[] = { 312 + "gpio21", "gpio22", "gpio24", 313 + }; 314 + 315 + static const char * const ps_hold_groups[] = { 316 + "gpio83", 317 + }; 318 + 319 + static const char * const prim_audio_groups[] = { 320 + "gpio20", "gpio21", "gpio22", "gpio23", 321 + }; 322 + 323 + static const char * const sec_audio_groups[] = { 324 + "gpio25", "gpio26", "gpio27", "gpio28", 325 + }; 326 + 327 + static const char * const cdc_mclk_groups[] = { 328 + "gpio24", 329 + }; 330 + 331 + static 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 + 346 + static 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 + 439 + static 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 + 449 + static int mdm9615_pinctrl_probe(struct platform_device *pdev) 450 + { 451 + return msm_pinctrl_probe(pdev, &mdm9615_pinctrl); 452 + } 453 + 454 + static const struct of_device_id mdm9615_pinctrl_of_match[] = { 455 + { .compatible = "qcom,mdm9615-pinctrl", }, 456 + { }, 457 + }; 458 + 459 + static 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 + 468 + static int __init mdm9615_pinctrl_init(void) 469 + { 470 + return platform_driver_register(&mdm9615_pinctrl_driver); 471 + } 472 + arch_initcall(mdm9615_pinctrl_init); 473 + 474 + static void __exit mdm9615_pinctrl_exit(void) 475 + { 476 + platform_driver_unregister(&mdm9615_pinctrl_driver); 477 + } 478 + module_exit(mdm9615_pinctrl_exit); 479 + 480 + MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>"); 481 + MODULE_DESCRIPTION("Qualcomm MDM9615 pinctrl driver"); 482 + MODULE_LICENSE("GPL v2"); 483 + MODULE_DEVICE_TABLE(of, mdm9615_pinctrl_of_match);
+4 -2
drivers/pinctrl/qcom/pinctrl-msm.c
··· 29 29 #include <linux/spinlock.h> 30 30 #include <linux/reboot.h> 31 31 #include <linux/pm.h> 32 + #include <linux/log2.h> 32 33 33 34 #include "../core.h" 34 35 #include "../pinconf.h" ··· 139 138 struct msm_pinctrl *pctrl = pinctrl_dev_get_drvdata(pctldev); 140 139 const struct msm_pingroup *g; 141 140 unsigned long flags; 142 - u32 val; 141 + u32 val, mask; 143 142 int i; 144 143 145 144 g = &pctrl->soc->groups[group]; 145 + mask = GENMASK(g->mux_bit + order_base_2(g->nfuncs) - 1, g->mux_bit); 146 146 147 147 for (i = 0; i < g->nfuncs; i++) { 148 148 if (g->funcs[i] == function) ··· 156 154 spin_lock_irqsave(&pctrl->lock, flags); 157 155 158 156 val = readl(pctrl->regs + g->ctl_reg); 159 - val &= ~(0x7 << g->mux_bit); 157 + val &= mask; 160 158 val |= i << g->mux_bit; 161 159 writel(val, pctrl->regs + g->ctl_reg); 162 160
+74 -40
drivers/pinctrl/qcom/pinctrl-msm8660.c
··· 506 506 MSM_MUX_usb_fs2_oe_n, 507 507 MSM_MUX_vfe, 508 508 MSM_MUX_vsens_alarm, 509 + MSM_MUX_ebi2cs, 510 + MSM_MUX_ebi2, 509 511 MSM_MUX__, 510 512 }; 511 513 ··· 698 696 static const char * const vsens_alarm_groups[] = { 699 697 "gpio127" 700 698 }; 699 + static const char * const ebi2cs_groups[] = { 700 + "gpio39", /* CS1A */ 701 + "gpio40", /* CS2A */ 702 + "gpio123", /* CS1B */ 703 + "gpio124", /* CS2B */ 704 + "gpio131", /* CS5 */ 705 + "gpio132", /* CS4 */ 706 + "gpio133", /* CS3 */ 707 + "gpio134", /* CS0 */ 708 + }; 709 + static const char * const ebi2_groups[] = { 710 + /* ADDR9 & ADDR8 */ 711 + "gpio37", "gpio38", 712 + /* ADDR7 - ADDR 0 */ 713 + "gpio123", "gpio124", "gpio125", "gpio126", 714 + "gpio127", "gpio128", "gpio129", "gpio130", 715 + /* (muxed address+data) AD15 - AD0 */ 716 + "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", 717 + "gpio140", "gpio141", "gpio142", "gpio143", "gpio144", 718 + "gpio145", "gpio146", "gpio147", "gpio148", "gpio149", 719 + "gpio150", 720 + "gpio151", /* OE output enable */ 721 + "gpio152", /* clock */ 722 + "gpio153", /* ADV */ 723 + "gpio154", /* WAIT (input) */ 724 + "gpio155", /* UB Upper Byte Enable */ 725 + "gpio156", /* LB Lower Byte Enable */ 726 + "gpio157", /* WE Write Enable */ 727 + "gpio158", /* busy */ 728 + }; 701 729 702 730 static const struct msm_function msm8660_functions[] = { 703 731 FUNCTION(gpio), ··· 781 749 FUNCTION(usb_fs2_oe_n), 782 750 FUNCTION(vfe), 783 751 FUNCTION(vsens_alarm), 752 + FUNCTION(ebi2cs), /* for EBI2 chip selects */ 753 + FUNCTION(ebi2), /* for general EBI2 pins */ 784 754 }; 785 755 786 756 static const struct msm_pingroup msm8660_groups[] = { ··· 823 789 PINGROUP(34, gsbi1, _, _, _, _, _, _), 824 790 PINGROUP(35, gsbi1, _, _, _, _, _, _), 825 791 PINGROUP(36, gsbi1, _, _, _, _, _, _), 826 - PINGROUP(37, gsbi2, _, _, _, _, _, _), 827 - PINGROUP(38, gsbi2, _, _, _, _, _, _), 828 - PINGROUP(39, gsbi2, _, mdp_vsync, _, _, _, _), 829 - PINGROUP(40, gsbi2, _, _, _, _, _, _), 792 + PINGROUP(37, gsbi2, ebi2, _, _, _, _, _), 793 + PINGROUP(38, gsbi2, ebi2, _, _, _, _, _), 794 + PINGROUP(39, gsbi2, ebi2cs, mdp_vsync, _, _, _, _), 795 + PINGROUP(40, gsbi2, ebi2cs, _, _, _, _, _), 830 796 PINGROUP(41, gsbi3, mdp_vsync, _, _, _, _, _), 831 797 PINGROUP(42, gsbi3, vfe, _, _, _, _, _), 832 798 PINGROUP(43, gsbi3, _, _, _, _, _, _), ··· 909 875 PINGROUP(120, i2s, _, _, _, _, _, _), 910 876 PINGROUP(121, i2s, _, _, _, _, _, _), 911 877 PINGROUP(122, i2s, gp_clk_1b, _, _, _, _, _), 912 - PINGROUP(123, _, gsbi2_spi_cs1_n, _, _, _, _, _), 913 - PINGROUP(124, _, gsbi2_spi_cs2_n, _, _, _, _, _), 914 - PINGROUP(125, _, gsbi2_spi_cs3_n, _, _, _, _, _), 915 - PINGROUP(126, _, _, _, _, _, _, _), 916 - PINGROUP(127, _, vsens_alarm, _, _, _, _, _), 917 - PINGROUP(128, _, _, _, _, _, _, _), 918 - PINGROUP(129, _, _, _, _, _, _, _), 919 - PINGROUP(130, _, _, _, _, _, _, _), 920 - PINGROUP(131, _, _, _, _, _, _, _), 921 - PINGROUP(132, _, _, _, _, _, _, _), 922 - PINGROUP(133, _, _, _, _, _, _, _), 923 - PINGROUP(134, _, _, _, _, _, _, _), 924 - PINGROUP(135, _, _, _, _, _, _, _), 925 - PINGROUP(136, _, _, _, _, _, _, _), 926 - PINGROUP(137, _, _, _, _, _, _, _), 927 - PINGROUP(138, _, _, _, _, _, _, _), 928 - PINGROUP(139, _, _, _, _, _, _, _), 929 - PINGROUP(140, _, _, _, _, _, _, _), 930 - PINGROUP(141, _, _, _, _, _, _, _), 931 - PINGROUP(142, _, _, _, _, _, _, _), 932 - PINGROUP(143, _, sdc2, _, _, _, _, _), 933 - PINGROUP(144, _, sdc2, _, _, _, _, _), 934 - PINGROUP(145, _, sdc2, _, _, _, _, _), 935 - PINGROUP(146, _, sdc2, _, _, _, _, _), 936 - PINGROUP(147, _, sdc2, _, _, _, _, _), 937 - PINGROUP(148, _, sdc2, _, _, _, _, _), 938 - PINGROUP(149, _, sdc2, _, _, _, _, _), 939 - PINGROUP(150, _, sdc2, _, _, _, _, _), 940 - PINGROUP(151, _, sdc2, _, _, _, _, _), 941 - PINGROUP(152, _, sdc2, _, _, _, _, _), 942 - PINGROUP(153, _, _, _, _, _, _, _), 943 - PINGROUP(154, _, _, _, _, _, _, _), 944 - PINGROUP(155, _, _, _, _, _, _, _), 945 - PINGROUP(156, _, _, _, _, _, _, _), 946 - PINGROUP(157, _, _, _, _, _, _, _), 947 - PINGROUP(158, _, _, _, _, _, _, _), 878 + PINGROUP(123, ebi2, gsbi2_spi_cs1_n, ebi2cs, _, _, _, _), 879 + PINGROUP(124, ebi2, gsbi2_spi_cs2_n, ebi2cs, _, _, _, _), 880 + PINGROUP(125, ebi2, gsbi2_spi_cs3_n, _, _, _, _, _), 881 + PINGROUP(126, ebi2, _, _, _, _, _, _), 882 + PINGROUP(127, ebi2, vsens_alarm, _, _, _, _, _), 883 + PINGROUP(128, ebi2, _, _, _, _, _, _), 884 + PINGROUP(129, ebi2, _, _, _, _, _, _), 885 + PINGROUP(130, ebi2, _, _, _, _, _, _), 886 + PINGROUP(131, ebi2cs, _, _, _, _, _, _), 887 + PINGROUP(132, ebi2cs, _, _, _, _, _, _), 888 + PINGROUP(133, ebi2cs, _, _, _, _, _, _), 889 + PINGROUP(134, ebi2cs, _, _, _, _, _, _), 890 + PINGROUP(135, ebi2, _, _, _, _, _, _), 891 + PINGROUP(136, ebi2, _, _, _, _, _, _), 892 + PINGROUP(137, ebi2, _, _, _, _, _, _), 893 + PINGROUP(138, ebi2, _, _, _, _, _, _), 894 + PINGROUP(139, ebi2, _, _, _, _, _, _), 895 + PINGROUP(140, ebi2, _, _, _, _, _, _), 896 + PINGROUP(141, ebi2, _, _, _, _, _, _), 897 + PINGROUP(142, ebi2, _, _, _, _, _, _), 898 + PINGROUP(143, ebi2, sdc2, _, _, _, _, _), 899 + PINGROUP(144, ebi2, sdc2, _, _, _, _, _), 900 + PINGROUP(145, ebi2, sdc2, _, _, _, _, _), 901 + PINGROUP(146, ebi2, sdc2, _, _, _, _, _), 902 + PINGROUP(147, ebi2, sdc2, _, _, _, _, _), 903 + PINGROUP(148, ebi2, sdc2, _, _, _, _, _), 904 + PINGROUP(149, ebi2, sdc2, _, _, _, _, _), 905 + PINGROUP(150, ebi2, sdc2, _, _, _, _, _), 906 + PINGROUP(151, ebi2, sdc2, _, _, _, _, _), 907 + PINGROUP(152, ebi2, sdc2, _, _, _, _, _), 908 + PINGROUP(153, ebi2, _, _, _, _, _, _), 909 + PINGROUP(154, ebi2, _, _, _, _, _, _), 910 + PINGROUP(155, ebi2, _, _, _, _, _, _), 911 + PINGROUP(156, ebi2, _, _, _, _, _, _), 912 + PINGROUP(157, ebi2, _, _, _, _, _, _), 913 + PINGROUP(158, ebi2, _, _, _, _, _, _), 948 914 PINGROUP(159, sdc1, _, _, _, _, _, _), 949 915 PINGROUP(160, sdc1, _, _, _, _, _, _), 950 916 PINGROUP(161, sdc1, _, _, _, _, _, _),
+42 -1
drivers/pinctrl/qcom/pinctrl-msm8x74.c
··· 172 172 PINCTRL_PIN(149, "SDC2_CLK"), 173 173 PINCTRL_PIN(150, "SDC2_CMD"), 174 174 PINCTRL_PIN(151, "SDC2_DATA"), 175 + PINCTRL_PIN(152, "HSIC_STROBE"), 176 + PINCTRL_PIN(153, "HSIC_DATA"), 175 177 }; 176 178 177 179 #define DECLARE_MSM_GPIO_PINS(pin) static const unsigned int gpio##pin##_pins[] = { pin } ··· 330 328 static const unsigned int sdc2_clk_pins[] = { 149 }; 331 329 static const unsigned int sdc2_cmd_pins[] = { 150 }; 332 330 static const unsigned int sdc2_data_pins[] = { 151 }; 331 + static const unsigned int hsic_strobe_pins[] = { 152 }; 332 + static const unsigned int hsic_data_pins[] = { 153 }; 333 333 334 334 #define FUNCTION(fname) \ 335 335 [MSM_MUX_##fname] = { \ ··· 390 386 .mux_bit = -1, \ 391 387 .pull_bit = pull, \ 392 388 .drv_bit = drv, \ 389 + .oe_bit = -1, \ 390 + .in_bit = -1, \ 391 + .out_bit = -1, \ 392 + .intr_enable_bit = -1, \ 393 + .intr_status_bit = -1, \ 394 + .intr_target_bit = -1, \ 395 + .intr_target_kpss_val = -1, \ 396 + .intr_raw_status_bit = -1, \ 397 + .intr_polarity_bit = -1, \ 398 + .intr_detection_bit = -1, \ 399 + .intr_detection_width = -1, \ 400 + } 401 + 402 + #define HSIC_PINGROUP(pg_name, ctl) \ 403 + { \ 404 + .name = #pg_name, \ 405 + .pins = pg_name##_pins, \ 406 + .npins = ARRAY_SIZE(pg_name##_pins), \ 407 + .funcs = (int[]){ \ 408 + MSM_MUX_gpio, \ 409 + MSM_MUX_hsic_ctl, \ 410 + }, \ 411 + .nfuncs = 2, \ 412 + .ctl_reg = ctl, \ 413 + .io_reg = 0, \ 414 + .intr_cfg_reg = 0, \ 415 + .intr_status_reg = 0, \ 416 + .intr_target_reg = 0, \ 417 + .mux_bit = 25, \ 418 + .pull_bit = -1, \ 419 + .drv_bit = -1, \ 393 420 .oe_bit = -1, \ 394 421 .in_bit = -1, \ 395 422 .out_bit = -1, \ ··· 544 509 MSM_MUX_fm, 545 510 MSM_MUX_wlan, 546 511 MSM_MUX_slimbus, 512 + MSM_MUX_hsic_ctl, 547 513 MSM_MUX_NA, 548 514 }; 549 515 ··· 570 534 "gpio123", "gpio124", "gpio125", "gpio126", "gpio127", "gpio128", 571 535 "gpio129", "gpio130", "gpio131", "gpio132", "gpio133", "gpio134", 572 536 "gpio135", "gpio136", "gpio137", "gpio138", "gpio139", "gpio140", 573 - "gpio141", "gpio142", "gpio143", "gpio144", "gpio145" 537 + "gpio141", "gpio142", "gpio143", "gpio144", "gpio145", "hsic_data", 538 + "hsic_strobe", 574 539 }; 575 540 576 541 static const char * const blsp_uart1_groups[] = { ··· 791 754 }; 792 755 793 756 static const char * const slimbus_groups[] = { "gpio70", "gpio71" }; 757 + static const char * const hsic_ctl_groups[] = { "hsic_strobe", "hsic_data" }; 794 758 795 759 static const struct msm_function msm8x74_functions[] = { 796 760 FUNCTION(gpio), ··· 899 861 FUNCTION(fm), 900 862 FUNCTION(wlan), 901 863 FUNCTION(slimbus), 864 + FUNCTION(hsic_ctl), 902 865 }; 903 866 904 867 static const struct msm_pingroup msm8x74_groups[] = { ··· 1055 1016 SDC_PINGROUP(sdc2_clk, 0x2048, 14, 6), 1056 1017 SDC_PINGROUP(sdc2_cmd, 0x2048, 11, 3), 1057 1018 SDC_PINGROUP(sdc2_data, 0x2048, 9, 0), 1019 + HSIC_PINGROUP(hsic_strobe, 0x2050), 1020 + HSIC_PINGROUP(hsic_data, 0x2054), 1058 1021 }; 1059 1022 1060 1023 #define NUM_GPIO_PINGROUPS 146
+1
drivers/pinctrl/qcom/pinctrl-ssbi-mpp.c
··· 744 744 static const struct of_device_id pm8xxx_mpp_of_match[] = { 745 745 { .compatible = "qcom,pm8018-mpp" }, 746 746 { .compatible = "qcom,pm8038-mpp" }, 747 + { .compatible = "qcom,pm8058-mpp" }, 747 748 { .compatible = "qcom,pm8917-mpp" }, 748 749 { .compatible = "qcom,pm8821-mpp" }, 749 750 { .compatible = "qcom,pm8921-mpp" },
+1
drivers/pinctrl/samsung/pinctrl-exynos5440.c
··· 998 998 .driver = { 999 999 .name = "exynos5440-pinctrl", 1000 1000 .of_match_table = exynos5440_pinctrl_dt_match, 1001 + .suppress_bind_attrs = true, 1001 1002 }, 1002 1003 }; 1003 1004
+1
drivers/pinctrl/samsung/pinctrl-samsung.c
··· 1274 1274 .driver = { 1275 1275 .name = "samsung-pinctrl", 1276 1276 .of_match_table = samsung_pinctrl_dt_match, 1277 + .suppress_bind_attrs = true, 1277 1278 }, 1278 1279 }; 1279 1280
-10
drivers/pinctrl/sh-pfc/core.c
··· 598 598 return 0; 599 599 } 600 600 601 - static 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 - 610 601 static const struct platform_device_id sh_pfc_id_table[] = { 611 602 #ifdef CONFIG_PINCTRL_PFC_SH7203 612 603 { "pfc-sh7203", (kernel_ulong_t)&sh7203_pinmux_info }, ··· 641 650 642 651 static struct platform_driver sh_pfc_driver = { 643 652 .probe = sh_pfc_probe, 644 - .remove = sh_pfc_remove, 645 653 .id_table = sh_pfc_id_table, 646 654 .driver = { 647 655 .name = DRV_NAME,
-58
drivers/pinctrl/sh-pfc/core.h
··· 10 10 #ifndef __SH_PFC_CORE_H__ 11 11 #define __SH_PFC_CORE_H__ 12 12 13 - #include <linux/compiler.h> 14 - #include <linux/spinlock.h> 15 13 #include <linux/types.h> 16 14 17 15 #include "sh_pfc.h" 18 - 19 - struct sh_pfc_window { 20 - phys_addr_t phys; 21 - void __iomem *virt; 22 - unsigned long size; 23 - }; 24 - 25 - struct sh_pfc_chip; 26 - struct sh_pfc_pinctrl; 27 16 28 17 struct sh_pfc_pin_range { 29 18 u16 start; 30 19 u16 end; 31 20 }; 32 21 33 - struct 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 - 55 22 int sh_pfc_register_gpiochip(struct sh_pfc *pfc); 56 - int sh_pfc_unregister_gpiochip(struct sh_pfc *pfc); 57 23 58 24 int sh_pfc_register_pinctrl(struct sh_pfc *pfc); 59 25 ··· 32 66 33 67 int sh_pfc_get_pin_index(struct sh_pfc *pfc, unsigned int pin); 34 68 int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type); 35 - 36 - extern const struct sh_pfc_soc_info emev2_pinmux_info; 37 - extern const struct sh_pfc_soc_info r8a73a4_pinmux_info; 38 - extern const struct sh_pfc_soc_info r8a7740_pinmux_info; 39 - extern const struct sh_pfc_soc_info r8a7778_pinmux_info; 40 - extern const struct sh_pfc_soc_info r8a7779_pinmux_info; 41 - extern const struct sh_pfc_soc_info r8a7790_pinmux_info; 42 - extern const struct sh_pfc_soc_info r8a7791_pinmux_info; 43 - extern const struct sh_pfc_soc_info r8a7793_pinmux_info; 44 - extern const struct sh_pfc_soc_info r8a7794_pinmux_info; 45 - extern const struct sh_pfc_soc_info r8a7795_pinmux_info; 46 - extern const struct sh_pfc_soc_info sh7203_pinmux_info; 47 - extern const struct sh_pfc_soc_info sh7264_pinmux_info; 48 - extern const struct sh_pfc_soc_info sh7269_pinmux_info; 49 - extern const struct sh_pfc_soc_info sh73a0_pinmux_info; 50 - extern const struct sh_pfc_soc_info sh7720_pinmux_info; 51 - extern const struct sh_pfc_soc_info sh7722_pinmux_info; 52 - extern const struct sh_pfc_soc_info sh7723_pinmux_info; 53 - extern const struct sh_pfc_soc_info sh7724_pinmux_info; 54 - extern const struct sh_pfc_soc_info sh7734_pinmux_info; 55 - extern const struct sh_pfc_soc_info sh7757_pinmux_info; 56 - extern const struct sh_pfc_soc_info sh7785_pinmux_info; 57 - extern const struct sh_pfc_soc_info sh7786_pinmux_info; 58 - extern const struct sh_pfc_soc_info shx3_pinmux_info; 59 69 60 70 #endif /* __SH_PFC_CORE_H__ */
+1 -12
drivers/pinctrl/sh-pfc/gpio.c
··· 318 318 if (ret < 0) 319 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 322 if (unlikely(ret < 0)) 323 323 return ERR_PTR(ret); 324 324 ··· 399 399 chip = sh_pfc_add_gpiochip(pfc, gpio_function_setup, NULL); 400 400 if (IS_ERR(chip)) 401 401 return PTR_ERR(chip); 402 - 403 - pfc->func = chip; 404 402 #endif /* CONFIG_SUPERH */ 405 403 406 - return 0; 407 - } 408 - 409 - int 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 404 return 0; 416 405 }
-1
drivers/pinctrl/sh-pfc/pfc-r8a73a4.c
··· 21 21 #include <linux/kernel.h> 22 22 #include <linux/pinctrl/pinconf-generic.h> 23 23 24 - #include "core.h" 25 24 #include "sh_pfc.h" 26 25 27 26 #define CPU_ALL_PORT(fn, pfx, sfx) \
-1
drivers/pinctrl/sh-pfc/pfc-r8a7740.c
··· 22 22 #include <linux/kernel.h> 23 23 #include <linux/pinctrl/pinconf-generic.h> 24 24 25 - #include "core.h" 26 25 #include "sh_pfc.h" 27 26 28 27 #define CPU_ALL_PORT(fn, pfx, sfx) \
+1 -1
drivers/pinctrl/sh-pfc/pfc-r8a7778.c
··· 23 23 #include <linux/io.h> 24 24 #include <linux/kernel.h> 25 25 #include <linux/pinctrl/pinconf-generic.h> 26 - #include "core.h" 26 + 27 27 #include "sh_pfc.h" 28 28 29 29 #define PORT_GP_PUP_1(bank, pin, fn, sfx) \
+13 -46
drivers/pinctrl/sh-pfc/pfc-r8a7790.c
··· 24 24 #include <linux/io.h> 25 25 #include <linux/kernel.h> 26 26 27 - #include "core.h" 28 27 #include "sh_pfc.h" 29 28 30 29 /* ··· 4695 4696 "vin3_clk", 4696 4697 }; 4697 4698 4698 - #define IOCTRL6 0x8c 4699 - 4700 - static int r8a7790_get_io_voltage(struct sh_pfc *pfc, unsigned int pin) 4701 - { 4702 - u32 data, mask; 4703 - 4704 - if (WARN(pin < RCAR_GP_PIN(3, 0) || pin > RCAR_GP_PIN(3, 31), "invalid pin %#x", pin)) 4705 - return -EINVAL; 4706 - 4707 - data = ioread32(pfc->windows->virt + IOCTRL6), 4708 - /* Bits in IOCTRL6 are numbered in opposite order to pins */ 4709 - mask = 0x80000000 >> (pin & 0x1f); 4710 - 4711 - return (data & mask) ? 3300 : 1800; 4712 - } 4713 - 4714 - static int r8a7790_set_io_voltage(struct sh_pfc *pfc, unsigned int pin, u16 mV) 4715 - { 4716 - u32 data, mask; 4717 - 4718 - if (WARN(pin < RCAR_GP_PIN(3, 0) || pin > RCAR_GP_PIN(3, 31), "invalid pin %#x", pin)) 4719 - return -EINVAL; 4720 - 4721 - if (mV != 1800 && mV != 3300) 4722 - return -EINVAL; 4723 - 4724 - data = ioread32(pfc->windows->virt + IOCTRL6); 4725 - /* Bits in IOCTRL6 are numbered in opposite order to pins */ 4726 - mask = 0x80000000 >> (pin & 0x1f); 4727 - 4728 - if (mV == 3300) 4729 - data |= mask; 4730 - else 4731 - data &= ~mask; 4732 - 4733 - iowrite32(~data, pfc->windows->virt); /* unlock reg */ 4734 - iowrite32(data, pfc->windows->virt + IOCTRL6); 4735 - 4736 - return 0; 4737 - } 4738 - 4739 4699 static const struct sh_pfc_function pinmux_functions[] = { 4740 4700 SH_PFC_FUNCTION(audio_clk), 4741 4701 SH_PFC_FUNCTION(avb), ··· 5694 5736 { }, 5695 5737 }; 5696 5738 5697 - static const struct sh_pfc_soc_operations pinmux_ops = { 5698 - .get_io_voltage = r8a7790_get_io_voltage, 5699 - .set_io_voltage = r8a7790_set_io_voltage, 5739 + static int r8a7790_pin_to_pocctrl(struct sh_pfc *pfc, unsigned int pin, u32 *pocctrl) 5740 + { 5741 + if (pin < RCAR_GP_PIN(3, 0) || pin > RCAR_GP_PIN(3, 31)) 5742 + return -EINVAL; 5743 + 5744 + *pocctrl = 0xe606008c; 5745 + 5746 + return 31 - (pin & 0x1f); 5747 + } 5748 + 5749 + static const struct sh_pfc_soc_operations r8a7790_pinmux_ops = { 5750 + .pin_to_pocctrl = r8a7790_pin_to_pocctrl, 5700 5751 }; 5701 5752 5702 5753 const struct sh_pfc_soc_info r8a7790_pinmux_info = { 5703 5754 .name = "r8a77900_pfc", 5704 - .ops = &pinmux_ops, 5755 + .ops = &r8a7790_pinmux_ops, 5705 5756 .unlock_reg = 0xe6060000, /* PMMR */ 5706 5757 5707 5758 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
-1
drivers/pinctrl/sh-pfc/pfc-r8a7791.c
··· 11 11 12 12 #include <linux/kernel.h> 13 13 14 - #include "core.h" 15 14 #include "sh_pfc.h" 16 15 17 16 #define CPU_ALL_PORT(fn, sfx) \
+320 -7
drivers/pinctrl/sh-pfc/pfc-r8a7795.c
··· 17 17 PORT_GP_CFG_16(0, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 18 18 PORT_GP_CFG_28(1, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 19 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), \ 21 - PORT_GP_CFG_18(4, 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_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 26 PORT_GP_CFG_26(5, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 23 27 PORT_GP_CFG_32(6, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH), \ 24 28 PORT_GP_CFG_4(7, fn, sfx, SH_PFC_PIN_CFG_DRIVE_STRENGTH) ··· 556 552 PINMUX_SINGLE(AVS2), 557 553 PINMUX_SINGLE(HDMI0_CEC), 558 554 PINMUX_SINGLE(HDMI1_CEC), 555 + PINMUX_SINGLE(I2C_SEL_0_1), 556 + PINMUX_SINGLE(I2C_SEL_3_1), 557 + PINMUX_SINGLE(I2C_SEL_5_1), 559 558 PINMUX_SINGLE(MSIOF0_RXD), 560 559 PINMUX_SINGLE(MSIOF0_SCK), 561 560 PINMUX_SINGLE(MSIOF0_TXD), ··· 1408 1401 PINMUX_IPSR_MSEL(IP17_7_4, STP_ISSYNC_0_E, SEL_SSP1_0_4), 1409 1402 PINMUX_IPSR_MSEL(IP17_7_4, RIF2_D1_B, SEL_DRIF2_1), 1410 1403 PINMUX_IPSR_GPSR(IP17_7_4, TPU0TO3), 1411 - 1412 - /* I2C */ 1413 - PINMUX_IPSR_NOGP(0, I2C_SEL_0_1), 1414 - PINMUX_IPSR_NOGP(0, I2C_SEL_3_1), 1415 - PINMUX_IPSR_NOGP(0, I2C_SEL_5_1), 1416 1404 }; 1417 1405 1418 1406 static const struct sh_pfc_pin pinmux_pins[] = { ··· 1654 1652 }; 1655 1653 static const unsigned int canfd1_data_mux[] = { 1656 1654 CANFD1_TX_MARK, CANFD1_RX_MARK, 1655 + }; 1656 + 1657 + /* - DRIF0 --------------------------------------------------------------- */ 1658 + static const unsigned int drif0_ctrl_a_pins[] = { 1659 + /* CLK, SYNC */ 1660 + RCAR_GP_PIN(6, 8), RCAR_GP_PIN(6, 9), 1661 + }; 1662 + static const unsigned int drif0_ctrl_a_mux[] = { 1663 + RIF0_CLK_A_MARK, RIF0_SYNC_A_MARK, 1664 + }; 1665 + static const unsigned int drif0_data0_a_pins[] = { 1666 + /* D0 */ 1667 + RCAR_GP_PIN(6, 10), 1668 + }; 1669 + static const unsigned int drif0_data0_a_mux[] = { 1670 + RIF0_D0_A_MARK, 1671 + }; 1672 + static const unsigned int drif0_data1_a_pins[] = { 1673 + /* D1 */ 1674 + RCAR_GP_PIN(6, 7), 1675 + }; 1676 + static const unsigned int drif0_data1_a_mux[] = { 1677 + RIF0_D1_A_MARK, 1678 + }; 1679 + static const unsigned int drif0_ctrl_b_pins[] = { 1680 + /* CLK, SYNC */ 1681 + RCAR_GP_PIN(5, 0), RCAR_GP_PIN(5, 4), 1682 + }; 1683 + static const unsigned int drif0_ctrl_b_mux[] = { 1684 + RIF0_CLK_B_MARK, RIF0_SYNC_B_MARK, 1685 + }; 1686 + static const unsigned int drif0_data0_b_pins[] = { 1687 + /* D0 */ 1688 + RCAR_GP_PIN(5, 1), 1689 + }; 1690 + static const unsigned int drif0_data0_b_mux[] = { 1691 + RIF0_D0_B_MARK, 1692 + }; 1693 + static const unsigned int drif0_data1_b_pins[] = { 1694 + /* D1 */ 1695 + RCAR_GP_PIN(5, 2), 1696 + }; 1697 + static const unsigned int drif0_data1_b_mux[] = { 1698 + RIF0_D1_B_MARK, 1699 + }; 1700 + static const unsigned int drif0_ctrl_c_pins[] = { 1701 + /* CLK, SYNC */ 1702 + RCAR_GP_PIN(5, 12), RCAR_GP_PIN(5, 15), 1703 + }; 1704 + static const unsigned int drif0_ctrl_c_mux[] = { 1705 + RIF0_CLK_C_MARK, RIF0_SYNC_C_MARK, 1706 + }; 1707 + static const unsigned int drif0_data0_c_pins[] = { 1708 + /* D0 */ 1709 + RCAR_GP_PIN(5, 13), 1710 + }; 1711 + static const unsigned int drif0_data0_c_mux[] = { 1712 + RIF0_D0_C_MARK, 1713 + }; 1714 + static const unsigned int drif0_data1_c_pins[] = { 1715 + /* D1 */ 1716 + RCAR_GP_PIN(5, 14), 1717 + }; 1718 + static const unsigned int drif0_data1_c_mux[] = { 1719 + RIF0_D1_C_MARK, 1720 + }; 1721 + /* - DRIF1 --------------------------------------------------------------- */ 1722 + static const unsigned int drif1_ctrl_a_pins[] = { 1723 + /* CLK, SYNC */ 1724 + RCAR_GP_PIN(6, 17), RCAR_GP_PIN(6, 18), 1725 + }; 1726 + static const unsigned int drif1_ctrl_a_mux[] = { 1727 + RIF1_CLK_A_MARK, RIF1_SYNC_A_MARK, 1728 + }; 1729 + static const unsigned int drif1_data0_a_pins[] = { 1730 + /* D0 */ 1731 + RCAR_GP_PIN(6, 19), 1732 + }; 1733 + static const unsigned int drif1_data0_a_mux[] = { 1734 + RIF1_D0_A_MARK, 1735 + }; 1736 + static const unsigned int drif1_data1_a_pins[] = { 1737 + /* D1 */ 1738 + RCAR_GP_PIN(6, 20), 1739 + }; 1740 + static const unsigned int drif1_data1_a_mux[] = { 1741 + RIF1_D1_A_MARK, 1742 + }; 1743 + static const unsigned int drif1_ctrl_b_pins[] = { 1744 + /* CLK, SYNC */ 1745 + RCAR_GP_PIN(5, 9), RCAR_GP_PIN(5, 3), 1746 + }; 1747 + static const unsigned int drif1_ctrl_b_mux[] = { 1748 + RIF1_CLK_B_MARK, RIF1_SYNC_B_MARK, 1749 + }; 1750 + static const unsigned int drif1_data0_b_pins[] = { 1751 + /* D0 */ 1752 + RCAR_GP_PIN(5, 7), 1753 + }; 1754 + static const unsigned int drif1_data0_b_mux[] = { 1755 + RIF1_D0_B_MARK, 1756 + }; 1757 + static const unsigned int drif1_data1_b_pins[] = { 1758 + /* D1 */ 1759 + RCAR_GP_PIN(5, 8), 1760 + }; 1761 + static const unsigned int drif1_data1_b_mux[] = { 1762 + RIF1_D1_B_MARK, 1763 + }; 1764 + static const unsigned int drif1_ctrl_c_pins[] = { 1765 + /* CLK, SYNC */ 1766 + RCAR_GP_PIN(5, 5), RCAR_GP_PIN(5, 11), 1767 + }; 1768 + static const unsigned int drif1_ctrl_c_mux[] = { 1769 + RIF1_CLK_C_MARK, RIF1_SYNC_C_MARK, 1770 + }; 1771 + static const unsigned int drif1_data0_c_pins[] = { 1772 + /* D0 */ 1773 + RCAR_GP_PIN(5, 6), 1774 + }; 1775 + static const unsigned int drif1_data0_c_mux[] = { 1776 + RIF1_D0_C_MARK, 1777 + }; 1778 + static const unsigned int drif1_data1_c_pins[] = { 1779 + /* D1 */ 1780 + RCAR_GP_PIN(5, 10), 1781 + }; 1782 + static const unsigned int drif1_data1_c_mux[] = { 1783 + RIF1_D1_C_MARK, 1784 + }; 1785 + /* - DRIF2 --------------------------------------------------------------- */ 1786 + static const unsigned int drif2_ctrl_a_pins[] = { 1787 + /* CLK, SYNC */ 1788 + RCAR_GP_PIN(6, 8), RCAR_GP_PIN(6, 9), 1789 + }; 1790 + static const unsigned int drif2_ctrl_a_mux[] = { 1791 + RIF2_CLK_A_MARK, RIF2_SYNC_A_MARK, 1792 + }; 1793 + static const unsigned int drif2_data0_a_pins[] = { 1794 + /* D0 */ 1795 + RCAR_GP_PIN(6, 7), 1796 + }; 1797 + static const unsigned int drif2_data0_a_mux[] = { 1798 + RIF2_D0_A_MARK, 1799 + }; 1800 + static const unsigned int drif2_data1_a_pins[] = { 1801 + /* D1 */ 1802 + RCAR_GP_PIN(6, 10), 1803 + }; 1804 + static const unsigned int drif2_data1_a_mux[] = { 1805 + RIF2_D1_A_MARK, 1806 + }; 1807 + static const unsigned int drif2_ctrl_b_pins[] = { 1808 + /* CLK, SYNC */ 1809 + RCAR_GP_PIN(6, 26), RCAR_GP_PIN(6, 27), 1810 + }; 1811 + static const unsigned int drif2_ctrl_b_mux[] = { 1812 + RIF2_CLK_B_MARK, RIF2_SYNC_B_MARK, 1813 + }; 1814 + static const unsigned int drif2_data0_b_pins[] = { 1815 + /* D0 */ 1816 + RCAR_GP_PIN(6, 30), 1817 + }; 1818 + static const unsigned int drif2_data0_b_mux[] = { 1819 + RIF2_D0_B_MARK, 1820 + }; 1821 + static const unsigned int drif2_data1_b_pins[] = { 1822 + /* D1 */ 1823 + RCAR_GP_PIN(6, 31), 1824 + }; 1825 + static const unsigned int drif2_data1_b_mux[] = { 1826 + RIF2_D1_B_MARK, 1827 + }; 1828 + /* - DRIF3 --------------------------------------------------------------- */ 1829 + static const unsigned int drif3_ctrl_a_pins[] = { 1830 + /* CLK, SYNC */ 1831 + RCAR_GP_PIN(6, 17), RCAR_GP_PIN(6, 18), 1832 + }; 1833 + static const unsigned int drif3_ctrl_a_mux[] = { 1834 + RIF3_CLK_A_MARK, RIF3_SYNC_A_MARK, 1835 + }; 1836 + static const unsigned int drif3_data0_a_pins[] = { 1837 + /* D0 */ 1838 + RCAR_GP_PIN(6, 19), 1839 + }; 1840 + static const unsigned int drif3_data0_a_mux[] = { 1841 + RIF3_D0_A_MARK, 1842 + }; 1843 + static const unsigned int drif3_data1_a_pins[] = { 1844 + /* D1 */ 1845 + RCAR_GP_PIN(6, 20), 1846 + }; 1847 + static const unsigned int drif3_data1_a_mux[] = { 1848 + RIF3_D1_A_MARK, 1849 + }; 1850 + static const unsigned int drif3_ctrl_b_pins[] = { 1851 + /* CLK, SYNC */ 1852 + RCAR_GP_PIN(6, 24), RCAR_GP_PIN(6, 25), 1853 + }; 1854 + static const unsigned int drif3_ctrl_b_mux[] = { 1855 + RIF3_CLK_B_MARK, RIF3_SYNC_B_MARK, 1856 + }; 1857 + static const unsigned int drif3_data0_b_pins[] = { 1858 + /* D0 */ 1859 + RCAR_GP_PIN(6, 28), 1860 + }; 1861 + static const unsigned int drif3_data0_b_mux[] = { 1862 + RIF3_D0_B_MARK, 1863 + }; 1864 + static const unsigned int drif3_data1_b_pins[] = { 1865 + /* D1 */ 1866 + RCAR_GP_PIN(6, 29), 1867 + }; 1868 + static const unsigned int drif3_data1_b_mux[] = { 1869 + RIF3_D1_B_MARK, 1657 1870 }; 1658 1871 1659 1872 /* - HSCIF0 ----------------------------------------------------------------- */ ··· 3563 3346 SH_PFC_PIN_GROUP(canfd0_data_a), 3564 3347 SH_PFC_PIN_GROUP(canfd0_data_b), 3565 3348 SH_PFC_PIN_GROUP(canfd1_data), 3349 + SH_PFC_PIN_GROUP(drif0_ctrl_a), 3350 + SH_PFC_PIN_GROUP(drif0_data0_a), 3351 + SH_PFC_PIN_GROUP(drif0_data1_a), 3352 + SH_PFC_PIN_GROUP(drif0_ctrl_b), 3353 + SH_PFC_PIN_GROUP(drif0_data0_b), 3354 + SH_PFC_PIN_GROUP(drif0_data1_b), 3355 + SH_PFC_PIN_GROUP(drif0_ctrl_c), 3356 + SH_PFC_PIN_GROUP(drif0_data0_c), 3357 + SH_PFC_PIN_GROUP(drif0_data1_c), 3358 + SH_PFC_PIN_GROUP(drif1_ctrl_a), 3359 + SH_PFC_PIN_GROUP(drif1_data0_a), 3360 + SH_PFC_PIN_GROUP(drif1_data1_a), 3361 + SH_PFC_PIN_GROUP(drif1_ctrl_b), 3362 + SH_PFC_PIN_GROUP(drif1_data0_b), 3363 + SH_PFC_PIN_GROUP(drif1_data1_b), 3364 + SH_PFC_PIN_GROUP(drif1_ctrl_c), 3365 + SH_PFC_PIN_GROUP(drif1_data0_c), 3366 + SH_PFC_PIN_GROUP(drif1_data1_c), 3367 + SH_PFC_PIN_GROUP(drif2_ctrl_a), 3368 + SH_PFC_PIN_GROUP(drif2_data0_a), 3369 + SH_PFC_PIN_GROUP(drif2_data1_a), 3370 + SH_PFC_PIN_GROUP(drif2_ctrl_b), 3371 + SH_PFC_PIN_GROUP(drif2_data0_b), 3372 + SH_PFC_PIN_GROUP(drif2_data1_b), 3373 + SH_PFC_PIN_GROUP(drif3_ctrl_a), 3374 + SH_PFC_PIN_GROUP(drif3_data0_a), 3375 + SH_PFC_PIN_GROUP(drif3_data1_a), 3376 + SH_PFC_PIN_GROUP(drif3_ctrl_b), 3377 + SH_PFC_PIN_GROUP(drif3_data0_b), 3378 + SH_PFC_PIN_GROUP(drif3_data1_b), 3566 3379 SH_PFC_PIN_GROUP(hscif0_data), 3567 3380 SH_PFC_PIN_GROUP(hscif0_clk), 3568 3381 SH_PFC_PIN_GROUP(hscif0_ctrl), ··· 3874 3627 3875 3628 static const char * const canfd1_groups[] = { 3876 3629 "canfd1_data", 3630 + }; 3631 + 3632 + static const char * const drif0_groups[] = { 3633 + "drif0_ctrl_a", 3634 + "drif0_data0_a", 3635 + "drif0_data1_a", 3636 + "drif0_ctrl_b", 3637 + "drif0_data0_b", 3638 + "drif0_data1_b", 3639 + "drif0_ctrl_c", 3640 + "drif0_data0_c", 3641 + "drif0_data1_c", 3642 + }; 3643 + 3644 + static const char * const drif1_groups[] = { 3645 + "drif1_ctrl_a", 3646 + "drif1_data0_a", 3647 + "drif1_data1_a", 3648 + "drif1_ctrl_b", 3649 + "drif1_data0_b", 3650 + "drif1_data1_b", 3651 + "drif1_ctrl_c", 3652 + "drif1_data0_c", 3653 + "drif1_data1_c", 3654 + }; 3655 + 3656 + static const char * const drif2_groups[] = { 3657 + "drif2_ctrl_a", 3658 + "drif2_data0_a", 3659 + "drif2_data1_a", 3660 + "drif2_ctrl_b", 3661 + "drif2_data0_b", 3662 + "drif2_data1_b", 3663 + }; 3664 + 3665 + static const char * const drif3_groups[] = { 3666 + "drif3_ctrl_a", 3667 + "drif3_data0_a", 3668 + "drif3_data1_a", 3669 + "drif3_ctrl_b", 3670 + "drif3_data0_b", 3671 + "drif3_data1_b", 3877 3672 }; 3878 3673 3879 3674 static const char * const hscif0_groups[] = { ··· 4261 3972 SH_PFC_FUNCTION(can_clk), 4262 3973 SH_PFC_FUNCTION(canfd0), 4263 3974 SH_PFC_FUNCTION(canfd1), 3975 + SH_PFC_FUNCTION(drif0), 3976 + SH_PFC_FUNCTION(drif1), 3977 + SH_PFC_FUNCTION(drif2), 3978 + SH_PFC_FUNCTION(drif3), 4264 3979 SH_PFC_FUNCTION(hscif0), 4265 3980 SH_PFC_FUNCTION(hscif1), 4266 3981 SH_PFC_FUNCTION(hscif2), ··· 5058 4765 { }, 5059 4766 }; 5060 4767 4768 + static int r8a7795_pin_to_pocctrl(struct sh_pfc *pfc, unsigned int pin, u32 *pocctrl) 4769 + { 4770 + int bit = -EINVAL; 4771 + 4772 + *pocctrl = 0xe6060380; 4773 + 4774 + if (pin >= RCAR_GP_PIN(3, 0) && pin <= RCAR_GP_PIN(3, 11)) 4775 + bit = pin & 0x1f; 4776 + 4777 + if (pin >= RCAR_GP_PIN(4, 0) && pin <= RCAR_GP_PIN(4, 17)) 4778 + bit = (pin & 0x1f) + 12; 4779 + 4780 + return bit; 4781 + } 4782 + 4783 + static const struct sh_pfc_soc_operations r8a7795_pinmux_ops = { 4784 + .pin_to_pocctrl = r8a7795_pin_to_pocctrl, 4785 + }; 4786 + 5061 4787 const struct sh_pfc_soc_info r8a7795_pinmux_info = { 5062 4788 .name = "r8a77950_pfc", 4789 + .ops = &r8a7795_pinmux_ops, 5063 4790 .unlock_reg = 0xe6060000, /* PMMR */ 5064 4791 5065 4792 .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
-1
drivers/pinctrl/sh-pfc/pfc-sh7757.c
··· 1625 1625 GPIO_FN(VBIOS_CS), 1626 1626 1627 1627 /* PTW (mobule: LBSC, EVC, SCIF) */ 1628 - GPIO_FN(A16), 1629 1628 GPIO_FN(A15), 1630 1629 GPIO_FN(A14), 1631 1630 GPIO_FN(A13),
+28 -20
drivers/pinctrl/sh-pfc/pinctrl.c
··· 632 632 } 633 633 634 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 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 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 647 spin_unlock_irqrestore(&pfc->lock, flags); 643 648 644 - if (ret < 0) 645 - return ret; 646 - 647 - *config = ret; 649 + *config = (val & BIT(bit)) ? 3300 : 1800; 648 650 break; 649 651 } 650 652 ··· 698 696 } 699 697 700 698 case PIN_CONFIG_POWER_SOURCE: { 701 - unsigned int arg = 702 - pinconf_to_config_argument(configs[i]); 703 - int ret; 699 + unsigned int mV = pinconf_to_config_argument(configs[i]); 700 + u32 pocctrl, val; 701 + int bit; 704 702 705 - if (!pfc->info->ops || !pfc->info->ops->set_io_voltage) 703 + if (!pfc->info->ops || !pfc->info->ops->pin_to_pocctrl) 706 704 return -ENOTSUPP; 707 705 708 - spin_lock_irqsave(&pfc->lock, flags); 709 - ret = pfc->info->ops->set_io_voltage(pfc, _pin, arg); 710 - spin_unlock_irqrestore(&pfc->lock, flags); 706 + bit = pfc->info->ops->pin_to_pocctrl(pfc, _pin, &pocctrl); 707 + if (WARN(bit < 0, "invalid pin %#x", _pin)) 708 + return bit; 711 709 712 - if (ret) 713 - return ret; 710 + if (mV != 1800 && mV != 3300) 711 + return -EINVAL; 712 + 713 + spin_lock_irqsave(&pfc->lock, flags); 714 + val = sh_pfc_read_reg(pfc, pocctrl, 32); 715 + if (mV == 3300) 716 + val |= BIT(bit); 717 + else 718 + val &= ~BIT(bit); 719 + sh_pfc_write_reg(pfc, pocctrl, 32, val); 720 + spin_unlock_irqrestore(&pfc->lock, flags); 714 721 715 722 break; 716 723 } ··· 814 803 pmx->pctl_desc.npins = pfc->info->nr_pins; 815 804 816 805 pmx->pctl = devm_pinctrl_register(pfc->dev, &pmx->pctl_desc, pmx); 817 - if (IS_ERR(pmx->pctl)) 818 - return PTR_ERR(pmx->pctl); 819 - 820 - return 0; 806 + return PTR_ERR_OR_ZERO(pmx->pctl); 821 807 }
+51 -4
drivers/pinctrl/sh-pfc/sh_pfc.h
··· 13 13 14 14 #include <linux/bug.h> 15 15 #include <linux/pinctrl/pinconf-generic.h> 16 + #include <linux/spinlock.h> 16 17 #include <linux/stringify.h> 17 18 18 19 enum { ··· 183 182 u16 force; 184 183 }; 185 184 186 - struct sh_pfc; 185 + struct sh_pfc_window { 186 + phys_addr_t phys; 187 + void __iomem *virt; 188 + unsigned long size; 189 + }; 190 + 191 + struct sh_pfc_pin_range; 192 + 193 + struct sh_pfc { 194 + struct device *dev; 195 + const struct sh_pfc_soc_info *info; 196 + spinlock_t lock; 197 + 198 + unsigned int num_windows; 199 + struct sh_pfc_window *windows; 200 + unsigned int num_irqs; 201 + unsigned int *irqs; 202 + 203 + struct sh_pfc_pin_range *ranges; 204 + unsigned int nr_ranges; 205 + 206 + unsigned int nr_gpio_pins; 207 + 208 + struct sh_pfc_chip *gpio; 209 + }; 187 210 188 211 struct sh_pfc_soc_operations { 189 212 int (*init)(struct sh_pfc *pfc); 190 213 unsigned int (*get_bias)(struct sh_pfc *pfc, unsigned int pin); 191 214 void (*set_bias)(struct sh_pfc *pfc, unsigned int pin, 192 215 unsigned int bias); 193 - int (*get_io_voltage)(struct sh_pfc *pfc, unsigned int pin); 194 - int (*set_io_voltage)(struct sh_pfc *pfc, unsigned int pin, 195 - u16 voltage_mV); 216 + int (*pin_to_pocctrl)(struct sh_pfc *pfc, unsigned int pin, u32 *pocctrl); 196 217 }; 197 218 198 219 struct sh_pfc_soc_info { ··· 249 226 250 227 u32 unlock_reg; 251 228 }; 229 + 230 + extern const struct sh_pfc_soc_info emev2_pinmux_info; 231 + extern const struct sh_pfc_soc_info r8a73a4_pinmux_info; 232 + extern const struct sh_pfc_soc_info r8a7740_pinmux_info; 233 + extern const struct sh_pfc_soc_info r8a7778_pinmux_info; 234 + extern const struct sh_pfc_soc_info r8a7779_pinmux_info; 235 + extern const struct sh_pfc_soc_info r8a7790_pinmux_info; 236 + extern const struct sh_pfc_soc_info r8a7791_pinmux_info; 237 + extern const struct sh_pfc_soc_info r8a7793_pinmux_info; 238 + extern const struct sh_pfc_soc_info r8a7794_pinmux_info; 239 + extern const struct sh_pfc_soc_info r8a7795_pinmux_info; 240 + extern const struct sh_pfc_soc_info sh7203_pinmux_info; 241 + extern const struct sh_pfc_soc_info sh7264_pinmux_info; 242 + extern const struct sh_pfc_soc_info sh7269_pinmux_info; 243 + extern const struct sh_pfc_soc_info sh73a0_pinmux_info; 244 + extern const struct sh_pfc_soc_info sh7720_pinmux_info; 245 + extern const struct sh_pfc_soc_info sh7722_pinmux_info; 246 + extern const struct sh_pfc_soc_info sh7723_pinmux_info; 247 + extern const struct sh_pfc_soc_info sh7724_pinmux_info; 248 + extern const struct sh_pfc_soc_info sh7734_pinmux_info; 249 + extern const struct sh_pfc_soc_info sh7757_pinmux_info; 250 + extern const struct sh_pfc_soc_info sh7785_pinmux_info; 251 + extern const struct sh_pfc_soc_info sh7786_pinmux_info; 252 + extern const struct sh_pfc_soc_info shx3_pinmux_info; 252 253 253 254 /* ----------------------------------------------------------------------------- 254 255 * Helper macros to create pin and port lists
+3 -1
drivers/pinctrl/sirf/pinctrl-atlas7.c
··· 5424 5424 if (ret) 5425 5425 return ret; 5426 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 5429 return -ENOMEM; 5430 + } 5429 5431 5430 5432 pmx->dev = &pdev->dev; 5431 5433
+6
drivers/pinctrl/stm32/Kconfig
··· 13 13 default MACH_STM32F429 14 14 select PINCTRL_STM32 15 15 16 + config 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 + 16 22 endif
+1
drivers/pinctrl/stm32/Makefile
··· 3 3 4 4 # SoC Drivers 5 5 obj-$(CONFIG_PINCTRL_STM32F429) += pinctrl-stm32f429.o 6 + obj-$(CONFIG_PINCTRL_STM32F746) += pinctrl-stm32f746.o
+10 -21
drivers/pinctrl/stm32/pinctrl-stm32.c
··· 638 638 return (val >> (offset * 2)); 639 639 } 640 640 641 - static bool stm32_pconf_input_get(struct stm32_gpio_bank *bank, 642 - unsigned int offset) 641 + static bool stm32_pconf_get(struct stm32_gpio_bank *bank, 642 + unsigned int offset, bool dir) 643 643 { 644 644 unsigned long flags; 645 645 u32 val; ··· 647 647 clk_enable(bank->clk); 648 648 spin_lock_irqsave(&bank->lock, flags); 649 649 650 - val = !!(readl_relaxed(bank->base + STM32_GPIO_IDR) & BIT(offset)); 651 - 652 - spin_unlock_irqrestore(&bank->lock, flags); 653 - clk_disable(bank->clk); 654 - 655 - return val; 656 - } 657 - 658 - static 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)); 650 + if (dir) 651 + val = !!(readl_relaxed(bank->base + STM32_GPIO_IDR) & 652 + BIT(offset)); 653 + else 654 + val = !!(readl_relaxed(bank->base + STM32_GPIO_ODR) & 655 + BIT(offset)); 667 656 668 657 spin_unlock_irqrestore(&bank->lock, flags); 669 658 clk_disable(bank->clk); ··· 761 772 switch (mode) { 762 773 /* input */ 763 774 case 0: 764 - val = stm32_pconf_input_get(bank, offset); 775 + val = stm32_pconf_get(bank, offset, true); 765 776 seq_printf(s, "- %s - %s", 766 777 val ? "high" : "low", 767 778 biasing[bias]); ··· 771 782 case 1: 772 783 drive = stm32_pconf_get_driving(bank, offset); 773 784 speed = stm32_pconf_get_speed(bank, offset); 774 - val = stm32_pconf_output_get(bank, offset); 785 + val = stm32_pconf_get(bank, offset, false); 775 786 seq_printf(s, "- %s - %s - %s - %s %s", 776 787 val ? "high" : "low", 777 788 drive ? "open drain" : "push pull",
+1681
drivers/pinctrl/stm32/pinctrl-stm32f746.c
··· 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 + 12 + static 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 + 1661 + static struct stm32_pinctrl_match_data stm32f746_match_data = { 1662 + .pins = stm32f746_pins, 1663 + .npins = ARRAY_SIZE(stm32f746_pins), 1664 + }; 1665 + 1666 + static const struct of_device_id stm32f746_pctrl_match[] = { 1667 + { 1668 + .compatible = "st,stm32f746-pinctrl", 1669 + .data = &stm32f746_match_data, 1670 + }, 1671 + { } 1672 + }; 1673 + 1674 + static 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 + }; 1681 + builtin_platform_driver(stm32f746_pinctrl_driver);
+3 -3
drivers/pinctrl/sunxi/pinctrl-sun8i-a23.c
··· 180 180 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 181 181 SUNXI_FUNCTION(0x0, "gpio_in"), 182 182 SUNXI_FUNCTION(0x1, "gpio_out"), 183 - SUNXI_FUNCTION(0x2, "nand"), /* DQ6 */ 183 + SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */ 184 184 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 185 185 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 186 186 SUNXI_FUNCTION(0x0, "gpio_in"), 187 187 SUNXI_FUNCTION(0x1, "gpio_out"), 188 - SUNXI_FUNCTION(0x2, "nand"), /* DQ7 */ 188 + SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */ 189 189 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 190 190 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 191 191 SUNXI_FUNCTION(0x0, "gpio_in"), 192 192 SUNXI_FUNCTION(0x1, "gpio_out"), 193 - SUNXI_FUNCTION(0x2, "nand"), /* DQS */ 193 + SUNXI_FUNCTION(0x2, "nand0"), /* DQS */ 194 194 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 195 195 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 17), 196 196 SUNXI_FUNCTION(0x0, "gpio_in"),
+3 -3
drivers/pinctrl/sunxi/pinctrl-sun8i-a33.c
··· 140 140 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 141 141 SUNXI_FUNCTION(0x0, "gpio_in"), 142 142 SUNXI_FUNCTION(0x1, "gpio_out"), 143 - SUNXI_FUNCTION(0x2, "nand"), /* DQ6 */ 143 + SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */ 144 144 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 145 145 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 146 146 SUNXI_FUNCTION(0x0, "gpio_in"), 147 147 SUNXI_FUNCTION(0x1, "gpio_out"), 148 - SUNXI_FUNCTION(0x2, "nand"), /* DQ7 */ 148 + SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */ 149 149 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 150 150 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 151 151 SUNXI_FUNCTION(0x0, "gpio_in"), 152 152 SUNXI_FUNCTION(0x1, "gpio_out"), 153 - SUNXI_FUNCTION(0x2, "nand"), /* DQS */ 153 + SUNXI_FUNCTION(0x2, "nand0"), /* DQS */ 154 154 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 155 155 /* Hole */ 156 156 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 2),
+3 -3
drivers/pinctrl/sunxi/pinctrl-sun8i-h3.c
··· 219 219 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 14), 220 220 SUNXI_FUNCTION(0x0, "gpio_in"), 221 221 SUNXI_FUNCTION(0x1, "gpio_out"), 222 - SUNXI_FUNCTION(0x2, "nand"), /* DQ6 */ 222 + SUNXI_FUNCTION(0x2, "nand0"), /* DQ6 */ 223 223 SUNXI_FUNCTION(0x3, "mmc2")), /* D6 */ 224 224 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 15), 225 225 SUNXI_FUNCTION(0x0, "gpio_in"), 226 226 SUNXI_FUNCTION(0x1, "gpio_out"), 227 - SUNXI_FUNCTION(0x2, "nand"), /* DQ7 */ 227 + SUNXI_FUNCTION(0x2, "nand0"), /* DQ7 */ 228 228 SUNXI_FUNCTION(0x3, "mmc2")), /* D7 */ 229 229 SUNXI_PIN(SUNXI_PINCTRL_PIN(C, 16), 230 230 SUNXI_FUNCTION(0x0, "gpio_in"), 231 231 SUNXI_FUNCTION(0x1, "gpio_out"), 232 - SUNXI_FUNCTION(0x2, "nand"), /* DQS */ 232 + SUNXI_FUNCTION(0x2, "nand0"), /* DQS */ 233 233 SUNXI_FUNCTION(0x3, "mmc2")), /* RST */ 234 234 /* Hole */ 235 235 SUNXI_PIN(SUNXI_PINCTRL_PIN(D, 0),
+4 -4
drivers/pinctrl/tegra/pinctrl-tegra.c
··· 632 632 u32 val; 633 633 634 634 for (i = 0; i < pmx->soc->ngroups; ++i) { 635 - if (pmx->soc->groups[i].parked_reg >= 0) { 636 - g = &pmx->soc->groups[i]; 637 - val = pmx_readl(pmx, g->parked_bank, g->parked_reg); 635 + g = &pmx->soc->groups[i]; 636 + if (g->parked_bit >= 0) { 637 + val = pmx_readl(pmx, g->mux_bank, g->mux_reg); 638 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 }
+1 -5
drivers/pinctrl/tegra/pinctrl-tegra.h
··· 93 93 * @tri_reg: Tri-state register offset. 94 94 * @tri_bank: Tri-state register bank. 95 95 * @tri_bit: Tri-state register bit. 96 - * @parked_reg: Parked register offset. -1 if unsupported. 97 - * @parked_bank: Parked register bank. 0 if unsupported. 98 - * @parked_bit: Parked register bit. 0 if unsupported. 96 + * @parked_bit: Parked register bit. -1 if unsupported. 99 97 * @einput_bit: Enable-input register bit. 100 98 * @odrain_bit: Open-drain register bit. 101 99 * @lock_bit: Lock register bit. ··· 136 138 s16 pupd_reg; 137 139 s16 tri_reg; 138 140 s16 drv_reg; 139 - s16 parked_reg; 140 141 u32 mux_bank:2; 141 142 u32 pupd_bank:2; 142 143 u32 tri_bank:2; 143 144 u32 drv_bank:2; 144 - u32 parked_bank:2; 145 145 s32 mux_bit:6; 146 146 s32 pupd_bit:6; 147 147 s32 tri_bit:6;
+2 -2
drivers/pinctrl/tegra/pinctrl-tegra114.c
··· 1578 1578 .lock_bit = 7, \ 1579 1579 .ioreset_bit = PINGROUP_BIT_##ior(8), \ 1580 1580 .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ 1581 - .parked_reg = -1, \ 1581 + .parked_bit = -1, \ 1582 1582 .drv_reg = -1, \ 1583 1583 } 1584 1584 ··· 1599 1599 .rcv_sel_bit = -1, \ 1600 1600 .drv_reg = DRV_PINGROUP_REG(r), \ 1601 1601 .drv_bank = 0, \ 1602 - .parked_reg = -1, \ 1602 + .parked_bit = -1, \ 1603 1603 .hsm_bit = hsm_b, \ 1604 1604 .schmitt_bit = schmitt_b, \ 1605 1605 .lpmd_bit = lpmd_b, \
+2 -2
drivers/pinctrl/tegra/pinctrl-tegra124.c
··· 1747 1747 .lock_bit = 7, \ 1748 1748 .ioreset_bit = PINGROUP_BIT_##ior(8), \ 1749 1749 .rcv_sel_bit = PINGROUP_BIT_##rcv_sel(9), \ 1750 - .parked_reg = -1, \ 1750 + .parked_bit = -1, \ 1751 1751 .drv_reg = -1, \ 1752 1752 } 1753 1753 ··· 1768 1768 .rcv_sel_bit = -1, \ 1769 1769 .drv_reg = DRV_PINGROUP_REG(r), \ 1770 1770 .drv_bank = 0, \ 1771 - .parked_reg = -1, \ 1771 + .parked_bit = -1, \ 1772 1772 .hsm_bit = hsm_b, \ 1773 1773 .schmitt_bit = schmitt_b, \ 1774 1774 .lpmd_bit = lpmd_b, \
+3 -3
drivers/pinctrl/tegra/pinctrl-tegra20.c
··· 1994 1994 .tri_reg = ((tri_r) - TRISTATE_REG_A), \ 1995 1995 .tri_bank = 0, \ 1996 1996 .tri_bit = tri_b, \ 1997 - .parked_reg = -1, \ 1997 + .parked_bit = -1, \ 1998 1998 .einput_bit = -1, \ 1999 1999 .odrain_bit = -1, \ 2000 2000 .lock_bit = -1, \ ··· 2014 2014 .pupd_bank = 2, \ 2015 2015 .pupd_bit = pupd_b, \ 2016 2016 .drv_reg = -1, \ 2017 - .parked_reg = -1, \ 2017 + .parked_bit = -1, \ 2018 2018 } 2019 2019 2020 2020 /* Pin groups for drive strength registers (configurable version) */ ··· 2030 2030 .tri_reg = -1, \ 2031 2031 .drv_reg = ((r) - PINGROUP_REG_A), \ 2032 2032 .drv_bank = 3, \ 2033 - .parked_reg = -1, \ 2033 + .parked_bit = -1, \ 2034 2034 .hsm_bit = hsm_b, \ 2035 2035 .schmitt_bit = schmitt_b, \ 2036 2036 .lpmd_bit = lpmd_b, \
+1 -3
drivers/pinctrl/tegra/pinctrl-tegra210.c
··· 1310 1310 .lock_bit = 7, \ 1311 1311 .ioreset_bit = -1, \ 1312 1312 .rcv_sel_bit = PINGROUP_BIT_##e_io_hv(10), \ 1313 - .parked_reg = PINGROUP_REG(r), \ 1314 - .parked_bank = 1, \ 1315 1313 .parked_bit = 5, \ 1316 1314 .hsm_bit = PINGROUP_BIT_##hsm(9), \ 1317 1315 .schmitt_bit = 12, \ ··· 1343 1345 .rcv_sel_bit = -1, \ 1344 1346 .drv_reg = DRV_PINGROUP_REG(r), \ 1345 1347 .drv_bank = 0, \ 1346 - .parked_reg = -1, \ 1348 + .parked_bit = -1, \ 1347 1349 .hsm_bit = -1, \ 1348 1350 .schmitt_bit = -1, \ 1349 1351 .lpmd_bit = -1, \
+2 -2
drivers/pinctrl/tegra/pinctrl-tegra30.c
··· 2139 2139 .lock_bit = 7, \ 2140 2140 .ioreset_bit = PINGROUP_BIT_##ior(8), \ 2141 2141 .rcv_sel_bit = -1, \ 2142 - .parked_reg = -1, \ 2142 + .parked_bit = -1, \ 2143 2143 .drv_reg = -1, \ 2144 2144 } 2145 2145 ··· 2160 2160 .rcv_sel_bit = -1, \ 2161 2161 .drv_reg = DRV_PINGROUP_REG(r), \ 2162 2162 .drv_bank = 0, \ 2163 - .parked_reg = -1, \ 2163 + .parked_bit = -1, \ 2164 2164 .hsm_bit = hsm_b, \ 2165 2165 .schmitt_bit = schmitt_b, \ 2166 2166 .lpmd_bit = lpmd_b, \
+14 -6
drivers/pinctrl/uniphier/Kconfig
··· 10 10 11 11 config PINCTRL_UNIPHIER_LD4 12 12 tristate "UniPhier PH1-LD4 SoC pinctrl driver" 13 - default y 13 + default ARM 14 14 15 15 config PINCTRL_UNIPHIER_PRO4 16 16 tristate "UniPhier PH1-Pro4 SoC pinctrl driver" 17 - default y 17 + default ARM 18 18 19 19 config PINCTRL_UNIPHIER_SLD8 20 20 tristate "UniPhier PH1-sLD8 SoC pinctrl driver" 21 - default y 21 + default ARM 22 22 23 23 config PINCTRL_UNIPHIER_PRO5 24 24 tristate "UniPhier PH1-Pro5 SoC pinctrl driver" 25 - default y 25 + default ARM 26 26 27 27 config PINCTRL_UNIPHIER_PXS2 28 28 tristate "UniPhier ProXstream2 SoC pinctrl driver" 29 - default y 29 + default ARM 30 30 31 31 config PINCTRL_UNIPHIER_LD6B 32 32 tristate "UniPhier PH1-LD6b SoC pinctrl driver" 33 - default y 33 + default ARM 34 + 35 + config PINCTRL_UNIPHIER_LD11 36 + tristate "UniPhier PH1-LD11 SoC pinctrl driver" 37 + default ARM64 38 + 39 + config PINCTRL_UNIPHIER_LD20 40 + tristate "UniPhier PH1-LD20 SoC pinctrl driver" 41 + default ARM64 34 42 35 43 endif
+2
drivers/pinctrl/uniphier/Makefile
··· 6 6 obj-$(CONFIG_PINCTRL_UNIPHIER_PRO5) += pinctrl-uniphier-pro5.o 7 7 obj-$(CONFIG_PINCTRL_UNIPHIER_PXS2) += pinctrl-uniphier-pxs2.o 8 8 obj-$(CONFIG_PINCTRL_UNIPHIER_LD6B) += pinctrl-uniphier-ld6b.o 9 + obj-$(CONFIG_PINCTRL_UNIPHIER_LD11) += pinctrl-uniphier-ld11.o 10 + obj-$(CONFIG_PINCTRL_UNIPHIER_LD20) += pinctrl-uniphier-ld20.o
+179 -117
drivers/pinctrl/uniphier/pinctrl-uniphier-core.c
··· 14 14 15 15 #include <linux/export.h> 16 16 #include <linux/mfd/syscon.h> 17 + #include <linux/of.h> 17 18 #include <linux/pinctrl/pinconf.h> 18 19 #include <linux/pinctrl/pinconf-generic.h> 19 20 #include <linux/pinctrl/pinctrl.h> ··· 27 26 #include "pinctrl-uniphier.h" 28 27 29 28 struct uniphier_pinctrl_priv { 29 + struct pinctrl_desc pctldesc; 30 30 struct pinctrl_dev *pctldev; 31 31 struct regmap *regmap; 32 + unsigned int regbase; 32 33 struct uniphier_pinctrl_socdata *socdata; 33 34 }; 34 35 ··· 66 63 static void uniphier_pctl_pin_dbg_show(struct pinctrl_dev *pctldev, 67 64 struct seq_file *s, unsigned offset) 68 65 { 69 - const struct pinctrl_pin_desc *pin = &pctldev->desc->pins[offset]; 70 - const char *pull_dir, *drv_str; 66 + const struct pin_desc *desc = pin_desc_get(pctldev, offset); 67 + const char *pull_dir, *drv_type; 71 68 72 - switch (uniphier_pin_get_pull_dir(pin->drv_data)) { 69 + switch (uniphier_pin_get_pull_dir(desc->drv_data)) { 73 70 case UNIPHIER_PIN_PULL_UP: 74 71 pull_dir = "UP"; 75 72 break; 76 73 case UNIPHIER_PIN_PULL_DOWN: 77 74 pull_dir = "DOWN"; 75 + break; 76 + case UNIPHIER_PIN_PULL_UP_FIXED: 77 + pull_dir = "UP(FIXED)"; 78 + break; 79 + case UNIPHIER_PIN_PULL_DOWN_FIXED: 80 + pull_dir = "DOWN(FIXED)"; 78 81 break; 79 82 case UNIPHIER_PIN_PULL_NONE: 80 83 pull_dir = "NONE"; ··· 89 80 BUG(); 90 81 } 91 82 92 - switch (uniphier_pin_get_drv_str(pin->drv_data)) { 93 - case UNIPHIER_PIN_DRV_4_8: 94 - drv_str = "4/8(mA)"; 83 + switch (uniphier_pin_get_drv_type(desc->drv_data)) { 84 + case UNIPHIER_PIN_DRV_1BIT: 85 + drv_type = "4/8(mA)"; 95 86 break; 96 - case UNIPHIER_PIN_DRV_8_12_16_20: 97 - drv_str = "8/12/16/20(mA)"; 87 + case UNIPHIER_PIN_DRV_2BIT: 88 + drv_type = "8/12/16/20(mA)"; 98 89 break; 99 - case UNIPHIER_PIN_DRV_FIXED_4: 100 - drv_str = "4(mA)"; 90 + case UNIPHIER_PIN_DRV_3BIT: 91 + drv_type = "4/5/7/9/11/12/14/16(mA)"; 101 92 break; 102 - case UNIPHIER_PIN_DRV_FIXED_5: 103 - drv_str = "5(mA)"; 93 + case UNIPHIER_PIN_DRV_FIXED4: 94 + drv_type = "4(mA)"; 104 95 break; 105 - case UNIPHIER_PIN_DRV_FIXED_8: 106 - drv_str = "8(mA)"; 96 + case UNIPHIER_PIN_DRV_FIXED5: 97 + drv_type = "5(mA)"; 98 + break; 99 + case UNIPHIER_PIN_DRV_FIXED8: 100 + drv_type = "8(mA)"; 107 101 break; 108 102 case UNIPHIER_PIN_DRV_NONE: 109 - drv_str = "NONE"; 103 + drv_type = "NONE"; 110 104 break; 111 105 default: 112 106 BUG(); 113 107 } 114 108 115 - seq_printf(s, " PULL_DIR=%s DRV_STR=%s", pull_dir, drv_str); 109 + seq_printf(s, " PULL_DIR=%s DRV_TYPE=%s", pull_dir, drv_type); 116 110 } 117 111 #endif 118 112 ··· 131 119 }; 132 120 133 121 static int uniphier_conf_pin_bias_get(struct pinctrl_dev *pctldev, 134 - const struct pinctrl_pin_desc *pin, 122 + const struct pin_desc *desc, 135 123 enum pin_config_param param) 136 124 { 137 125 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 138 126 enum uniphier_pin_pull_dir pull_dir = 139 - uniphier_pin_get_pull_dir(pin->drv_data); 127 + uniphier_pin_get_pull_dir(desc->drv_data); 140 128 unsigned int pupdctrl, reg, shift, val; 141 129 unsigned int expected = 1; 142 130 int ret; ··· 166 154 BUG(); 167 155 } 168 156 169 - pupdctrl = uniphier_pin_get_pupdctrl(pin->drv_data); 157 + pupdctrl = uniphier_pin_get_pupdctrl(desc->drv_data); 170 158 171 159 reg = UNIPHIER_PINCTRL_PUPDCTRL_BASE + pupdctrl / 32 * 4; 172 160 shift = pupdctrl % 32; 173 161 174 - ret = regmap_read(priv->regmap, reg, &val); 162 + ret = regmap_read(priv->regmap, priv->regbase + reg, &val); 175 163 if (ret) 176 164 return ret; 177 165 ··· 181 169 } 182 170 183 171 static int uniphier_conf_pin_drive_get(struct pinctrl_dev *pctldev, 184 - const struct pinctrl_pin_desc *pin, 172 + const struct pin_desc *desc, 185 173 u16 *strength) 186 174 { 187 175 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 188 - enum uniphier_pin_drv_str drv_str = 189 - uniphier_pin_get_drv_str(pin->drv_data); 190 - const unsigned int strength_4_8[] = {4, 8}; 191 - const unsigned int strength_8_12_16_20[] = {8, 12, 16, 20}; 176 + enum uniphier_pin_drv_type type = 177 + uniphier_pin_get_drv_type(desc->drv_data); 178 + const unsigned int strength_1bit[] = {4, 8}; 179 + const unsigned int strength_2bit[] = {8, 12, 16, 20}; 180 + const unsigned int strength_3bit[] = {4, 5, 7, 9, 11, 12, 14, 16}; 192 181 const unsigned int *supported_strength; 193 182 unsigned int drvctrl, reg, shift, mask, width, val; 194 183 int ret; 195 184 196 - switch (drv_str) { 197 - case UNIPHIER_PIN_DRV_4_8: 198 - supported_strength = strength_4_8; 185 + switch (type) { 186 + case UNIPHIER_PIN_DRV_1BIT: 187 + supported_strength = strength_1bit; 188 + reg = UNIPHIER_PINCTRL_DRVCTRL_BASE; 199 189 width = 1; 200 190 break; 201 - case UNIPHIER_PIN_DRV_8_12_16_20: 202 - supported_strength = strength_8_12_16_20; 191 + case UNIPHIER_PIN_DRV_2BIT: 192 + supported_strength = strength_2bit; 193 + reg = UNIPHIER_PINCTRL_DRV2CTRL_BASE; 203 194 width = 2; 204 195 break; 205 - case UNIPHIER_PIN_DRV_FIXED_4: 196 + case UNIPHIER_PIN_DRV_3BIT: 197 + supported_strength = strength_3bit; 198 + reg = UNIPHIER_PINCTRL_DRV3CTRL_BASE; 199 + width = 4; 200 + break; 201 + case UNIPHIER_PIN_DRV_FIXED4: 206 202 *strength = 4; 207 203 return 0; 208 - case UNIPHIER_PIN_DRV_FIXED_5: 204 + case UNIPHIER_PIN_DRV_FIXED5: 209 205 *strength = 5; 210 206 return 0; 211 - case UNIPHIER_PIN_DRV_FIXED_8: 207 + case UNIPHIER_PIN_DRV_FIXED8: 212 208 *strength = 8; 213 209 return 0; 214 210 default: ··· 224 204 return -EINVAL; 225 205 } 226 206 227 - drvctrl = uniphier_pin_get_drvctrl(pin->drv_data); 207 + drvctrl = uniphier_pin_get_drvctrl(desc->drv_data); 228 208 drvctrl *= width; 229 - 230 - reg = (width == 2) ? UNIPHIER_PINCTRL_DRV2CTRL_BASE : 231 - UNIPHIER_PINCTRL_DRVCTRL_BASE; 232 209 233 210 reg += drvctrl / 32 * 4; 234 211 shift = drvctrl % 32; 235 212 mask = (1U << width) - 1; 236 213 237 - ret = regmap_read(priv->regmap, reg, &val); 214 + ret = regmap_read(priv->regmap, priv->regbase + reg, &val); 238 215 if (ret) 239 216 return ret; 240 217 ··· 241 224 } 242 225 243 226 static int uniphier_conf_pin_input_enable_get(struct pinctrl_dev *pctldev, 244 - const struct pinctrl_pin_desc *pin) 227 + const struct pin_desc *desc) 245 228 { 246 229 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 247 - unsigned int iectrl = uniphier_pin_get_iectrl(pin->drv_data); 230 + unsigned int iectrl = uniphier_pin_get_iectrl(desc->drv_data); 248 231 unsigned int val; 249 232 int ret; 250 233 ··· 252 235 /* This pin is always input-enabled. */ 253 236 return 0; 254 237 255 - ret = regmap_read(priv->regmap, UNIPHIER_PINCTRL_IECTRL, &val); 238 + ret = regmap_read(priv->regmap, 239 + priv->regbase + UNIPHIER_PINCTRL_IECTRL, &val); 256 240 if (ret) 257 241 return ret; 258 242 ··· 264 246 unsigned pin, 265 247 unsigned long *configs) 266 248 { 267 - const struct pinctrl_pin_desc *pin_desc = &pctldev->desc->pins[pin]; 249 + const struct pin_desc *desc = pin_desc_get(pctldev, pin); 268 250 enum pin_config_param param = pinconf_to_config_param(*configs); 269 251 bool has_arg = false; 270 252 u16 arg; ··· 274 256 case PIN_CONFIG_BIAS_DISABLE: 275 257 case PIN_CONFIG_BIAS_PULL_UP: 276 258 case PIN_CONFIG_BIAS_PULL_DOWN: 277 - ret = uniphier_conf_pin_bias_get(pctldev, pin_desc, param); 259 + ret = uniphier_conf_pin_bias_get(pctldev, desc, param); 278 260 break; 279 261 case PIN_CONFIG_DRIVE_STRENGTH: 280 - ret = uniphier_conf_pin_drive_get(pctldev, pin_desc, &arg); 262 + ret = uniphier_conf_pin_drive_get(pctldev, desc, &arg); 281 263 has_arg = true; 282 264 break; 283 265 case PIN_CONFIG_INPUT_ENABLE: 284 - ret = uniphier_conf_pin_input_enable_get(pctldev, pin_desc); 266 + ret = uniphier_conf_pin_input_enable_get(pctldev, desc); 285 267 break; 286 268 default: 287 269 /* unsupported parameter */ ··· 296 278 } 297 279 298 280 static int uniphier_conf_pin_bias_set(struct pinctrl_dev *pctldev, 299 - const struct pinctrl_pin_desc *pin, 300 - enum pin_config_param param, 301 - u16 arg) 281 + const struct pin_desc *desc, 282 + enum pin_config_param param, u16 arg) 302 283 { 303 284 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 304 285 enum uniphier_pin_pull_dir pull_dir = 305 - uniphier_pin_get_pull_dir(pin->drv_data); 286 + uniphier_pin_get_pull_dir(desc->drv_data); 306 287 unsigned int pupdctrl, reg, shift; 307 288 unsigned int val = 1; 308 289 ··· 312 295 if (pull_dir == UNIPHIER_PIN_PULL_UP_FIXED || 313 296 pull_dir == UNIPHIER_PIN_PULL_DOWN_FIXED) { 314 297 dev_err(pctldev->dev, 315 - "can not disable pull register for pin %u (%s)\n", 316 - pin->number, pin->name); 298 + "can not disable pull register for pin %s\n", 299 + desc->name); 317 300 return -EINVAL; 318 301 } 319 302 val = 0; ··· 323 306 return 0; 324 307 if (pull_dir != UNIPHIER_PIN_PULL_UP) { 325 308 dev_err(pctldev->dev, 326 - "pull-up is unsupported for pin %u (%s)\n", 327 - pin->number, pin->name); 309 + "pull-up is unsupported for pin %s\n", 310 + desc->name); 328 311 return -EINVAL; 329 312 } 330 313 if (arg == 0) { ··· 337 320 return 0; 338 321 if (pull_dir != UNIPHIER_PIN_PULL_DOWN) { 339 322 dev_err(pctldev->dev, 340 - "pull-down is unsupported for pin %u (%s)\n", 341 - pin->number, pin->name); 323 + "pull-down is unsupported for pin %s\n", 324 + desc->name); 342 325 return -EINVAL; 343 326 } 344 327 if (arg == 0) { ··· 349 332 case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT: 350 333 if (pull_dir == UNIPHIER_PIN_PULL_NONE) { 351 334 dev_err(pctldev->dev, 352 - "pull-up/down is unsupported for pin %u (%s)\n", 353 - pin->number, pin->name); 335 + "pull-up/down is unsupported for pin %s\n", 336 + desc->name); 354 337 return -EINVAL; 355 338 } 356 339 ··· 361 344 BUG(); 362 345 } 363 346 364 - pupdctrl = uniphier_pin_get_pupdctrl(pin->drv_data); 347 + pupdctrl = uniphier_pin_get_pupdctrl(desc->drv_data); 365 348 366 349 reg = UNIPHIER_PINCTRL_PUPDCTRL_BASE + pupdctrl / 32 * 4; 367 350 shift = pupdctrl % 32; 368 351 369 - return regmap_update_bits(priv->regmap, reg, 1 << shift, val << shift); 352 + return regmap_update_bits(priv->regmap, priv->regbase + reg, 353 + 1 << shift, val << shift); 370 354 } 371 355 372 356 static int uniphier_conf_pin_drive_set(struct pinctrl_dev *pctldev, 373 - const struct pinctrl_pin_desc *pin, 357 + const struct pin_desc *desc, 374 358 u16 strength) 375 359 { 376 360 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 377 - enum uniphier_pin_drv_str drv_str = 378 - uniphier_pin_get_drv_str(pin->drv_data); 379 - const unsigned int strength_4_8[] = {4, 8, -1}; 380 - const unsigned int strength_8_12_16_20[] = {8, 12, 16, 20, -1}; 361 + enum uniphier_pin_drv_type type = 362 + uniphier_pin_get_drv_type(desc->drv_data); 363 + const unsigned int strength_1bit[] = {4, 8, -1}; 364 + const unsigned int strength_2bit[] = {8, 12, 16, 20, -1}; 365 + const unsigned int strength_3bit[] = {4, 5, 7, 9, 11, 12, 14, 16, -1}; 381 366 const unsigned int *supported_strength; 382 367 unsigned int drvctrl, reg, shift, mask, width, val; 383 368 384 - switch (drv_str) { 385 - case UNIPHIER_PIN_DRV_4_8: 386 - supported_strength = strength_4_8; 369 + switch (type) { 370 + case UNIPHIER_PIN_DRV_1BIT: 371 + supported_strength = strength_1bit; 372 + reg = UNIPHIER_PINCTRL_DRVCTRL_BASE; 387 373 width = 1; 388 374 break; 389 - case UNIPHIER_PIN_DRV_8_12_16_20: 390 - supported_strength = strength_8_12_16_20; 375 + case UNIPHIER_PIN_DRV_2BIT: 376 + supported_strength = strength_2bit; 377 + reg = UNIPHIER_PINCTRL_DRV2CTRL_BASE; 391 378 width = 2; 379 + break; 380 + case UNIPHIER_PIN_DRV_3BIT: 381 + supported_strength = strength_3bit; 382 + reg = UNIPHIER_PINCTRL_DRV3CTRL_BASE; 383 + width = 4; 392 384 break; 393 385 default: 394 386 dev_err(pctldev->dev, 395 - "cannot change drive strength for pin %u (%s)\n", 396 - pin->number, pin->name); 387 + "cannot change drive strength for pin %s\n", 388 + desc->name); 397 389 return -EINVAL; 398 390 } 399 391 ··· 413 387 414 388 if (val == 0) { 415 389 dev_err(pctldev->dev, 416 - "unsupported drive strength %u mA for pin %u (%s)\n", 417 - strength, pin->number, pin->name); 390 + "unsupported drive strength %u mA for pin %s\n", 391 + strength, desc->name); 418 392 return -EINVAL; 419 393 } 420 394 421 395 val--; 422 396 423 - drvctrl = uniphier_pin_get_drvctrl(pin->drv_data); 397 + drvctrl = uniphier_pin_get_drvctrl(desc->drv_data); 424 398 drvctrl *= width; 425 - 426 - reg = (width == 2) ? UNIPHIER_PINCTRL_DRV2CTRL_BASE : 427 - UNIPHIER_PINCTRL_DRVCTRL_BASE; 428 399 429 400 reg += drvctrl / 32 * 4; 430 401 shift = drvctrl % 32; 431 402 mask = (1U << width) - 1; 432 403 433 - return regmap_update_bits(priv->regmap, reg, 404 + return regmap_update_bits(priv->regmap, priv->regbase + reg, 434 405 mask << shift, val << shift); 435 406 } 436 407 437 408 static int uniphier_conf_pin_input_enable(struct pinctrl_dev *pctldev, 438 - const struct pinctrl_pin_desc *pin, 409 + const struct pin_desc *desc, 439 410 u16 enable) 440 411 { 441 412 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 442 - unsigned int iectrl = uniphier_pin_get_iectrl(pin->drv_data); 413 + unsigned int iectrl = uniphier_pin_get_iectrl(desc->drv_data); 414 + unsigned int reg, mask; 443 415 444 - if (enable == 0) { 445 - /* 446 - * Multiple pins share one input enable, so per-pin disabling 447 - * is impossible. 448 - */ 449 - dev_err(pctldev->dev, "unable to disable input\n"); 416 + /* 417 + * Multiple pins share one input enable, per-pin disabling is 418 + * impossible. 419 + */ 420 + if (!(priv->socdata->caps & UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL) && 421 + !enable) 450 422 return -EINVAL; 451 - } 452 423 424 + /* UNIPHIER_PIN_IECTRL_NONE means the pin is always input-enabled */ 453 425 if (iectrl == UNIPHIER_PIN_IECTRL_NONE) 454 - /* This pin is always input-enabled. nothing to do. */ 455 - return 0; 426 + return enable ? 0 : -EINVAL; 456 427 457 - return regmap_update_bits(priv->regmap, UNIPHIER_PINCTRL_IECTRL, 458 - BIT(iectrl), BIT(iectrl)); 428 + reg = priv->regbase + UNIPHIER_PINCTRL_IECTRL + iectrl / 32 * 4; 429 + mask = BIT(iectrl % 32); 430 + 431 + return regmap_update_bits(priv->regmap, reg, mask, enable ? mask : 0); 459 432 } 460 433 461 434 static int uniphier_conf_pin_config_set(struct pinctrl_dev *pctldev, ··· 462 437 unsigned long *configs, 463 438 unsigned num_configs) 464 439 { 465 - const struct pinctrl_pin_desc *pin_desc = &pctldev->desc->pins[pin]; 440 + const struct pin_desc *desc = pin_desc_get(pctldev, pin); 466 441 int i, ret; 467 442 468 443 for (i = 0; i < num_configs; i++) { ··· 475 450 case PIN_CONFIG_BIAS_PULL_UP: 476 451 case PIN_CONFIG_BIAS_PULL_DOWN: 477 452 case PIN_CONFIG_BIAS_PULL_PIN_DEFAULT: 478 - ret = uniphier_conf_pin_bias_set(pctldev, pin_desc, 453 + ret = uniphier_conf_pin_bias_set(pctldev, desc, 479 454 param, arg); 480 455 break; 481 456 case PIN_CONFIG_DRIVE_STRENGTH: 482 - ret = uniphier_conf_pin_drive_set(pctldev, pin_desc, 483 - arg); 457 + ret = uniphier_conf_pin_drive_set(pctldev, desc, arg); 484 458 break; 485 459 case PIN_CONFIG_INPUT_ENABLE: 486 - ret = uniphier_conf_pin_input_enable(pctldev, 487 - pin_desc, arg); 460 + ret = uniphier_conf_pin_input_enable(pctldev, desc, 461 + arg); 488 462 break; 489 463 default: 490 464 dev_err(pctldev->dev, ··· 555 531 } 556 532 557 533 static int uniphier_pmx_set_one_mux(struct pinctrl_dev *pctldev, unsigned pin, 558 - unsigned muxval) 534 + int muxval) 559 535 { 560 536 struct uniphier_pinctrl_priv *priv = pinctrl_dev_get_drvdata(pctldev); 561 - unsigned mux_bits = priv->socdata->mux_bits; 562 - unsigned reg_stride = priv->socdata->reg_stride; 563 - unsigned reg, reg_end, shift, mask; 537 + unsigned int mux_bits, reg_stride, reg, reg_end, shift, mask; 538 + bool load_pinctrl; 564 539 int ret; 565 540 566 541 /* some pins need input-enabling */ 567 542 ret = uniphier_conf_pin_input_enable(pctldev, 568 - &pctldev->desc->pins[pin], 1); 543 + pin_desc_get(pctldev, pin), 1); 569 544 if (ret) 570 545 return ret; 546 + 547 + if (muxval < 0) 548 + return 0; /* dedicated pin; nothing to do for pin-mux */ 549 + 550 + if (priv->socdata->caps & UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE) { 551 + /* 552 + * Mode reg_offset bit_position 553 + * Normal 4 * n shift+3:shift 554 + * Debug 4 * n shift+7:shift+4 555 + */ 556 + mux_bits = 4; 557 + reg_stride = 8; 558 + load_pinctrl = true; 559 + } else { 560 + /* 561 + * Mode reg_offset bit_position 562 + * Normal 8 * n shift+3:shift 563 + * Debug 8 * n + 4 shift+3:shift 564 + */ 565 + mux_bits = 8; 566 + reg_stride = 4; 567 + load_pinctrl = false; 568 + } 571 569 572 570 reg = UNIPHIER_PINCTRL_PINMUX_BASE + pin * mux_bits / 32 * reg_stride; 573 571 reg_end = reg + reg_stride; ··· 601 555 * stored in the offset+4. 602 556 */ 603 557 for (; reg < reg_end; reg += 4) { 604 - ret = regmap_update_bits(priv->regmap, reg, 558 + ret = regmap_update_bits(priv->regmap, priv->regbase + reg, 605 559 mask << shift, muxval << shift); 606 560 if (ret) 607 561 return ret; 608 562 muxval >>= mux_bits; 609 563 } 610 564 611 - if (priv->socdata->load_pinctrl) { 565 + if (load_pinctrl) { 612 566 ret = regmap_write(priv->regmap, 613 - UNIPHIER_PINCTRL_LOAD_PINMUX, 1); 567 + priv->regbase + UNIPHIER_PINCTRL_LOAD_PINMUX, 568 + 1); 614 569 if (ret) 615 570 return ret; 616 571 } ··· 680 633 }; 681 634 682 635 int uniphier_pinctrl_probe(struct platform_device *pdev, 683 - struct pinctrl_desc *desc, 684 636 struct uniphier_pinctrl_socdata *socdata) 685 637 { 686 638 struct device *dev = &pdev->dev; 687 639 struct uniphier_pinctrl_priv *priv; 640 + struct device_node *parent; 688 641 689 642 if (!socdata || 690 - !socdata->groups || 691 - !socdata->groups_count || 692 - !socdata->functions || 693 - !socdata->functions_count || 694 - !socdata->mux_bits || 695 - !socdata->reg_stride) { 643 + !socdata->pins || !socdata->npins || 644 + !socdata->groups || !socdata->groups_count || 645 + !socdata->functions || !socdata->functions_count) { 696 646 dev_err(dev, "pinctrl socdata lacks necessary members\n"); 697 647 return -EINVAL; 698 648 } ··· 698 654 if (!priv) 699 655 return -ENOMEM; 700 656 701 - priv->regmap = syscon_node_to_regmap(dev->of_node); 657 + if (of_device_is_compatible(dev->of_node, "socionext,ph1-ld4-pinctrl") || 658 + of_device_is_compatible(dev->of_node, "socionext,ph1-pro4-pinctrl") || 659 + of_device_is_compatible(dev->of_node, "socionext,ph1-sld8-pinctrl") || 660 + of_device_is_compatible(dev->of_node, "socionext,ph1-pro5-pinctrl") || 661 + of_device_is_compatible(dev->of_node, "socionext,proxstream2-pinctrl") || 662 + of_device_is_compatible(dev->of_node, "socionext,ph1-ld6b-pinctrl")) { 663 + /* old binding */ 664 + priv->regmap = syscon_node_to_regmap(dev->of_node); 665 + } else { 666 + priv->regbase = 0x1000; 667 + parent = of_get_parent(dev->of_node); 668 + priv->regmap = syscon_node_to_regmap(parent); 669 + of_node_put(parent); 670 + } 671 + 702 672 if (IS_ERR(priv->regmap)) { 703 673 dev_err(dev, "failed to get regmap\n"); 704 674 return PTR_ERR(priv->regmap); 705 675 } 706 676 707 677 priv->socdata = socdata; 708 - desc->pctlops = &uniphier_pctlops; 709 - desc->pmxops = &uniphier_pmxops; 710 - desc->confops = &uniphier_confops; 678 + priv->pctldesc.name = dev->driver->name; 679 + priv->pctldesc.pins = socdata->pins; 680 + priv->pctldesc.npins = socdata->npins; 681 + priv->pctldesc.pctlops = &uniphier_pctlops; 682 + priv->pctldesc.pmxops = &uniphier_pmxops; 683 + priv->pctldesc.confops = &uniphier_confops; 684 + priv->pctldesc.owner = dev->driver->owner; 711 685 712 - priv->pctldev = devm_pinctrl_register(dev, desc, priv); 686 + priv->pctldev = devm_pinctrl_register(dev, &priv->pctldesc, priv); 713 687 if (IS_ERR(priv->pctldev)) { 714 688 dev_err(dev, "failed to register UniPhier pinctrl driver\n"); 715 689 return PTR_ERR(priv->pctldev);
+952
drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
··· 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 + 23 + static 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 + 473 + static const unsigned emmc_pins[] = {18, 19, 20, 21, 22, 23, 24, 25}; 474 + static const int emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0}; 475 + static const unsigned emmc_dat8_pins[] = {26, 27, 28, 29}; 476 + static const int emmc_dat8_muxvals[] = {0, 0, 0, 0}; 477 + static const unsigned ether_rmii_pins[] = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 478 + 16, 17}; 479 + static const int ether_rmii_muxvals[] = {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4}; 480 + static const unsigned i2c0_pins[] = {63, 64}; 481 + static const int i2c0_muxvals[] = {0, 0}; 482 + static const unsigned i2c1_pins[] = {65, 66}; 483 + static const int i2c1_muxvals[] = {0, 0}; 484 + static const unsigned i2c3_pins[] = {67, 68}; 485 + static const int i2c3_muxvals[] = {1, 1}; 486 + static const unsigned i2c4_pins[] = {61, 62}; 487 + static const int i2c4_muxvals[] = {1, 1}; 488 + static const unsigned nand_pins[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 489 + 15, 16, 17}; 490 + static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 491 + static const unsigned system_bus_pins[] = {1, 2, 6, 7, 8, 9, 10, 11, 12, 13, 492 + 14, 15, 16, 17}; 493 + static const int system_bus_muxvals[] = {0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 494 + 2}; 495 + static const unsigned system_bus_cs1_pins[] = {0}; 496 + static const int system_bus_cs1_muxvals[] = {0}; 497 + static const unsigned uart0_pins[] = {54, 55}; 498 + static const int uart0_muxvals[] = {0, 0}; 499 + static const unsigned uart1_pins[] = {58, 59}; 500 + static const int uart1_muxvals[] = {1, 1}; 501 + static const unsigned uart2_pins[] = {90, 91}; 502 + static const int uart2_muxvals[] = {1, 1}; 503 + static const unsigned uart3_pins[] = {94, 95}; 504 + static const int uart3_muxvals[] = {1, 1}; 505 + static const unsigned usb0_pins[] = {46, 47}; 506 + static const int usb0_muxvals[] = {0, 0}; 507 + static const unsigned usb1_pins[] = {48, 49}; 508 + static const int usb1_muxvals[] = {0, 0}; 509 + static const unsigned usb2_pins[] = {50, 51}; 510 + static const int usb2_muxvals[] = {0, 0}; 511 + static 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 + }; 538 + static 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 + }; 565 + static 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 + }; 570 + static 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 + }; 575 + static 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 + }; 583 + static 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 + 592 + static 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 + 821 + static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 822 + static const char * const ether_rmii_groups[] = {"ether_rmii"}; 823 + static const char * const i2c0_groups[] = {"i2c0"}; 824 + static const char * const i2c1_groups[] = {"i2c1"}; 825 + static const char * const i2c3_groups[] = {"i2c3"}; 826 + static const char * const i2c4_groups[] = {"i2c4"}; 827 + static const char * const nand_groups[] = {"nand"}; 828 + static const char * const system_bus_groups[] = {"system_bus", 829 + "system_bus_cs1"}; 830 + static const char * const uart0_groups[] = {"uart0"}; 831 + static const char * const uart1_groups[] = {"uart1"}; 832 + static const char * const uart2_groups[] = {"uart2"}; 833 + static const char * const uart3_groups[] = {"uart3"}; 834 + static const char * const usb0_groups[] = {"usb0"}; 835 + static const char * const usb1_groups[] = {"usb1"}; 836 + static const char * const usb2_groups[] = {"usb2"}; 837 + static 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 + }; 879 + static 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 + 900 + static 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 + 920 + static 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 + 930 + static int uniphier_ld11_pinctrl_probe(struct platform_device *pdev) 931 + { 932 + return uniphier_pinctrl_probe(pdev, &uniphier_ld11_pindata); 933 + } 934 + 935 + static const struct of_device_id uniphier_ld11_pinctrl_match[] = { 936 + { .compatible = "socionext,uniphier-ld11-pinctrl" }, 937 + { /* sentinel */ } 938 + }; 939 + MODULE_DEVICE_TABLE(of, uniphier_ld11_pinctrl_match); 940 + 941 + static 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 + }; 948 + module_platform_driver(uniphier_ld11_pinctrl_driver); 949 + 950 + MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 951 + MODULE_DESCRIPTION("UniPhier PH1-LD11 pinctrl driver"); 952 + MODULE_LICENSE("GPL");
+1050
drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
··· 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 + 23 + static 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 + 554 + static const unsigned emmc_pins[] = {18, 19, 20, 21, 22, 23, 24, 25}; 555 + static const int emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0}; 556 + static const unsigned emmc_dat8_pins[] = {26, 27, 28, 29}; 557 + static const int emmc_dat8_muxvals[] = {0, 0, 0, 0}; 558 + static const unsigned ether_rgmii_pins[] = {30, 31, 32, 33, 34, 35, 36, 37, 38, 559 + 39, 40, 41, 42, 43, 44, 45}; 560 + static const int ether_rgmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 561 + 0, 0, 0, 0}; 562 + static const unsigned ether_rmii_pins[] = {30, 31, 32, 33, 34, 35, 36, 37, 39, 563 + 41, 42, 45}; 564 + static const int ether_rmii_muxvals[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; 565 + static const unsigned i2c0_pins[] = {63, 64}; 566 + static const int i2c0_muxvals[] = {0, 0}; 567 + static const unsigned i2c1_pins[] = {65, 66}; 568 + static const int i2c1_muxvals[] = {0, 0}; 569 + static const unsigned i2c3_pins[] = {67, 68}; 570 + static const int i2c3_muxvals[] = {1, 1}; 571 + static const unsigned i2c4_pins[] = {61, 62}; 572 + static const int i2c4_muxvals[] = {1, 1}; 573 + static const unsigned nand_pins[] = {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 574 + 15, 16, 17}; 575 + static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 576 + static const unsigned sd_pins[] = {10, 11, 12, 13, 14, 15, 16, 17}; 577 + static const int sd_muxvals[] = {3, 3, 3, 3, 3, 3, 3, 3}; /* No SDVOLC */ 578 + static const unsigned system_bus_pins[] = {1, 2, 6, 7, 8, 9, 10, 11, 12, 13, 579 + 14, 15, 16, 17}; 580 + static const int system_bus_muxvals[] = {0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 581 + 2}; 582 + static const unsigned system_bus_cs1_pins[] = {0}; 583 + static const int system_bus_cs1_muxvals[] = {0}; 584 + static const unsigned uart0_pins[] = {54, 55}; 585 + static const int uart0_muxvals[] = {0, 0}; 586 + static const unsigned uart1_pins[] = {58, 59}; 587 + static const int uart1_muxvals[] = {1, 1}; 588 + static const unsigned uart2_pins[] = {90, 91}; 589 + static const int uart2_muxvals[] = {1, 1}; 590 + static const unsigned uart3_pins[] = {94, 95}; 591 + static const int uart3_muxvals[] = {1, 1}; 592 + static const unsigned usb0_pins[] = {46, 47}; 593 + static const int usb0_muxvals[] = {0, 0}; 594 + static const unsigned usb1_pins[] = {48, 49}; 595 + static const int usb1_muxvals[] = {0, 0}; 596 + static const unsigned usb2_pins[] = {50, 51}; 597 + static const int usb2_muxvals[] = {0, 0}; 598 + static const unsigned usb3_pins[] = {52, 53}; 599 + static const int usb3_muxvals[] = {0, 0}; 600 + static 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 + }; 628 + static 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 + }; 656 + static 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 + }; 661 + static 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 + }; 666 + static 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 + }; 671 + static 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 + 677 + static 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 + 914 + static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 915 + static const char * const ether_rgmii_groups[] = {"ether_rgmii"}; 916 + static const char * const ether_rmii_groups[] = {"ether_rmii"}; 917 + static const char * const i2c0_groups[] = {"i2c0"}; 918 + static const char * const i2c1_groups[] = {"i2c1"}; 919 + static const char * const i2c3_groups[] = {"i2c3"}; 920 + static const char * const i2c4_groups[] = {"i2c4"}; 921 + static const char * const nand_groups[] = {"nand"}; 922 + static const char * const sd_groups[] = {"sd"}; 923 + static const char * const system_bus_groups[] = {"system_bus", 924 + "system_bus_cs1"}; 925 + static const char * const uart0_groups[] = {"uart0"}; 926 + static const char * const uart1_groups[] = {"uart1"}; 927 + static const char * const uart2_groups[] = {"uart2"}; 928 + static const char * const uart3_groups[] = {"uart3"}; 929 + static const char * const usb0_groups[] = {"usb0"}; 930 + static const char * const usb1_groups[] = {"usb1"}; 931 + static const char * const usb2_groups[] = {"usb2"}; 932 + static const char * const usb3_groups[] = {"usb3"}; 933 + static 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 + }; 980 + static 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 + 995 + static 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 + 1018 + static 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 + 1028 + static int uniphier_ld20_pinctrl_probe(struct platform_device *pdev) 1029 + { 1030 + return uniphier_pinctrl_probe(pdev, &uniphier_ld20_pindata); 1031 + } 1032 + 1033 + static const struct of_device_id uniphier_ld20_pinctrl_match[] = { 1034 + { .compatible = "socionext,uniphier-ld20-pinctrl" }, 1035 + { /* sentinel */ } 1036 + }; 1037 + MODULE_DEVICE_TABLE(of, uniphier_ld20_pinctrl_match); 1038 + 1039 + static 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 + }; 1046 + module_platform_driver(uniphier_ld20_pinctrl_driver); 1047 + 1048 + MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1049 + MODULE_DESCRIPTION("UniPhier PH1-LD20 pinctrl driver"); 1050 + MODULE_LICENSE("GPL");
+276 -218
drivers/pinctrl/uniphier/pinctrl-uniphier-ld4.c
··· 19 19 20 20 #include "pinctrl-uniphier.h" 21 21 22 - #define DRIVER_NAME "ph1-ld4-pinctrl" 23 - 24 - static const struct pinctrl_pin_desc ph1_ld4_pins[] = { 22 + static const struct pinctrl_pin_desc uniphier_ld4_pins[] = { 25 23 UNIPHIER_PINCTRL_PIN(0, "EA1", UNIPHIER_PIN_IECTRL_NONE, 26 - 8, UNIPHIER_PIN_DRV_4_8, 24 + 8, UNIPHIER_PIN_DRV_1BIT, 27 25 8, UNIPHIER_PIN_PULL_DOWN), 28 26 UNIPHIER_PINCTRL_PIN(1, "EA2", UNIPHIER_PIN_IECTRL_NONE, 29 - 9, UNIPHIER_PIN_DRV_4_8, 27 + 9, UNIPHIER_PIN_DRV_1BIT, 30 28 9, UNIPHIER_PIN_PULL_DOWN), 31 29 UNIPHIER_PINCTRL_PIN(2, "EA3", UNIPHIER_PIN_IECTRL_NONE, 32 - 10, UNIPHIER_PIN_DRV_4_8, 30 + 10, UNIPHIER_PIN_DRV_1BIT, 33 31 10, UNIPHIER_PIN_PULL_DOWN), 34 32 UNIPHIER_PINCTRL_PIN(3, "EA4", UNIPHIER_PIN_IECTRL_NONE, 35 - 11, UNIPHIER_PIN_DRV_4_8, 33 + 11, UNIPHIER_PIN_DRV_1BIT, 36 34 11, UNIPHIER_PIN_PULL_DOWN), 37 35 UNIPHIER_PINCTRL_PIN(4, "EA5", UNIPHIER_PIN_IECTRL_NONE, 38 - 12, UNIPHIER_PIN_DRV_4_8, 36 + 12, UNIPHIER_PIN_DRV_1BIT, 39 37 12, UNIPHIER_PIN_PULL_DOWN), 40 38 UNIPHIER_PINCTRL_PIN(5, "EA6", UNIPHIER_PIN_IECTRL_NONE, 41 - 13, UNIPHIER_PIN_DRV_4_8, 39 + 13, UNIPHIER_PIN_DRV_1BIT, 42 40 13, UNIPHIER_PIN_PULL_DOWN), 43 41 UNIPHIER_PINCTRL_PIN(6, "EA7", UNIPHIER_PIN_IECTRL_NONE, 44 - 14, UNIPHIER_PIN_DRV_4_8, 42 + 14, UNIPHIER_PIN_DRV_1BIT, 45 43 14, UNIPHIER_PIN_PULL_DOWN), 46 44 UNIPHIER_PINCTRL_PIN(7, "EA8", 0, 47 - 15, UNIPHIER_PIN_DRV_4_8, 45 + 15, UNIPHIER_PIN_DRV_1BIT, 48 46 15, UNIPHIER_PIN_PULL_DOWN), 49 47 UNIPHIER_PINCTRL_PIN(8, "EA9", 0, 50 - 16, UNIPHIER_PIN_DRV_4_8, 48 + 16, UNIPHIER_PIN_DRV_1BIT, 51 49 16, UNIPHIER_PIN_PULL_DOWN), 52 50 UNIPHIER_PINCTRL_PIN(9, "EA10", 0, 53 - 17, UNIPHIER_PIN_DRV_4_8, 51 + 17, UNIPHIER_PIN_DRV_1BIT, 54 52 17, UNIPHIER_PIN_PULL_DOWN), 55 53 UNIPHIER_PINCTRL_PIN(10, "EA11", 0, 56 - 18, UNIPHIER_PIN_DRV_4_8, 54 + 18, UNIPHIER_PIN_DRV_1BIT, 57 55 18, UNIPHIER_PIN_PULL_DOWN), 58 56 UNIPHIER_PINCTRL_PIN(11, "EA12", 0, 59 - 19, UNIPHIER_PIN_DRV_4_8, 57 + 19, UNIPHIER_PIN_DRV_1BIT, 60 58 19, UNIPHIER_PIN_PULL_DOWN), 61 59 UNIPHIER_PINCTRL_PIN(12, "EA13", 0, 62 - 20, UNIPHIER_PIN_DRV_4_8, 60 + 20, UNIPHIER_PIN_DRV_1BIT, 63 61 20, UNIPHIER_PIN_PULL_DOWN), 64 62 UNIPHIER_PINCTRL_PIN(13, "EA14", 0, 65 - 21, UNIPHIER_PIN_DRV_4_8, 63 + 21, UNIPHIER_PIN_DRV_1BIT, 66 64 21, UNIPHIER_PIN_PULL_DOWN), 67 65 UNIPHIER_PINCTRL_PIN(14, "EA15", 0, 68 - 22, UNIPHIER_PIN_DRV_4_8, 66 + 22, UNIPHIER_PIN_DRV_1BIT, 69 67 22, UNIPHIER_PIN_PULL_DOWN), 70 68 UNIPHIER_PINCTRL_PIN(15, "ECLK", UNIPHIER_PIN_IECTRL_NONE, 71 - 23, UNIPHIER_PIN_DRV_4_8, 69 + 23, UNIPHIER_PIN_DRV_1BIT, 72 70 23, UNIPHIER_PIN_PULL_DOWN), 73 71 UNIPHIER_PINCTRL_PIN(16, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 74 - 24, UNIPHIER_PIN_DRV_4_8, 72 + 24, UNIPHIER_PIN_DRV_1BIT, 75 73 24, UNIPHIER_PIN_PULL_UP), 76 74 UNIPHIER_PINCTRL_PIN(17, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 77 - 25, UNIPHIER_PIN_DRV_4_8, 75 + 25, UNIPHIER_PIN_DRV_1BIT, 78 76 25, UNIPHIER_PIN_PULL_UP), 79 77 UNIPHIER_PINCTRL_PIN(18, "ES0", UNIPHIER_PIN_IECTRL_NONE, 80 - 27, UNIPHIER_PIN_DRV_4_8, 78 + 27, UNIPHIER_PIN_DRV_1BIT, 81 79 27, UNIPHIER_PIN_PULL_UP), 82 80 UNIPHIER_PINCTRL_PIN(19, "ES1", UNIPHIER_PIN_IECTRL_NONE, 83 - 28, UNIPHIER_PIN_DRV_4_8, 81 + 28, UNIPHIER_PIN_DRV_1BIT, 84 82 28, UNIPHIER_PIN_PULL_UP), 85 83 UNIPHIER_PINCTRL_PIN(20, "ES2", UNIPHIER_PIN_IECTRL_NONE, 86 - 29, UNIPHIER_PIN_DRV_4_8, 84 + 29, UNIPHIER_PIN_DRV_1BIT, 87 85 29, UNIPHIER_PIN_PULL_UP), 88 86 UNIPHIER_PINCTRL_PIN(21, "XERST", UNIPHIER_PIN_IECTRL_NONE, 89 - 38, UNIPHIER_PIN_DRV_4_8, 87 + 38, UNIPHIER_PIN_DRV_1BIT, 90 88 38, UNIPHIER_PIN_PULL_UP), 91 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 91 146, UNIPHIER_PIN_PULL_UP), 94 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 94 147, UNIPHIER_PIN_PULL_UP), 97 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 97 148, UNIPHIER_PIN_PULL_UP), 100 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 100 149, UNIPHIER_PIN_PULL_UP), 103 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 103 150, UNIPHIER_PIN_PULL_UP), 106 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 106 151, UNIPHIER_PIN_PULL_UP), 109 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 109 152, UNIPHIER_PIN_PULL_UP), 112 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 112 153, UNIPHIER_PIN_PULL_UP), 115 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 115 154, UNIPHIER_PIN_PULL_UP), 118 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 118 155, UNIPHIER_PIN_PULL_UP), 121 119 UNIPHIER_PINCTRL_PIN(32, "RMII_RXD0", 6, 122 - 39, UNIPHIER_PIN_DRV_4_8, 120 + 39, UNIPHIER_PIN_DRV_1BIT, 123 121 39, UNIPHIER_PIN_PULL_DOWN), 124 122 UNIPHIER_PINCTRL_PIN(33, "RMII_RXD1", 6, 125 - 40, UNIPHIER_PIN_DRV_4_8, 123 + 40, UNIPHIER_PIN_DRV_1BIT, 126 124 40, UNIPHIER_PIN_PULL_DOWN), 127 125 UNIPHIER_PINCTRL_PIN(34, "RMII_CRS_DV", 6, 128 - 41, UNIPHIER_PIN_DRV_4_8, 126 + 41, UNIPHIER_PIN_DRV_1BIT, 129 127 41, UNIPHIER_PIN_PULL_DOWN), 130 128 UNIPHIER_PINCTRL_PIN(35, "RMII_RXER", 6, 131 - 42, UNIPHIER_PIN_DRV_4_8, 129 + 42, UNIPHIER_PIN_DRV_1BIT, 132 130 42, UNIPHIER_PIN_PULL_DOWN), 133 131 UNIPHIER_PINCTRL_PIN(36, "RMII_REFCLK", 6, 134 - 43, UNIPHIER_PIN_DRV_4_8, 132 + 43, UNIPHIER_PIN_DRV_1BIT, 135 133 43, UNIPHIER_PIN_PULL_DOWN), 136 134 UNIPHIER_PINCTRL_PIN(37, "RMII_TXD0", 6, 137 - 44, UNIPHIER_PIN_DRV_4_8, 135 + 44, UNIPHIER_PIN_DRV_1BIT, 138 136 44, UNIPHIER_PIN_PULL_DOWN), 139 137 UNIPHIER_PINCTRL_PIN(38, "RMII_TXD1", 6, 140 - 45, UNIPHIER_PIN_DRV_4_8, 138 + 45, UNIPHIER_PIN_DRV_1BIT, 141 139 45, UNIPHIER_PIN_PULL_DOWN), 142 140 UNIPHIER_PINCTRL_PIN(39, "RMII_TXEN", 6, 143 - 46, UNIPHIER_PIN_DRV_4_8, 141 + 46, UNIPHIER_PIN_DRV_1BIT, 144 142 46, UNIPHIER_PIN_PULL_DOWN), 145 143 UNIPHIER_PINCTRL_PIN(40, "MDC", 6, 146 - 47, UNIPHIER_PIN_DRV_4_8, 144 + 47, UNIPHIER_PIN_DRV_1BIT, 147 145 47, UNIPHIER_PIN_PULL_DOWN), 148 146 UNIPHIER_PINCTRL_PIN(41, "MDIO", 6, 149 - 48, UNIPHIER_PIN_DRV_4_8, 147 + 48, UNIPHIER_PIN_DRV_1BIT, 150 148 48, UNIPHIER_PIN_PULL_DOWN), 151 149 UNIPHIER_PINCTRL_PIN(42, "MDIO_INTL", 6, 152 - 49, UNIPHIER_PIN_DRV_4_8, 150 + 49, UNIPHIER_PIN_DRV_1BIT, 153 151 49, UNIPHIER_PIN_PULL_DOWN), 154 152 UNIPHIER_PINCTRL_PIN(43, "PHYRSTL", 6, 155 - 50, UNIPHIER_PIN_DRV_4_8, 153 + 50, UNIPHIER_PIN_DRV_1BIT, 156 154 50, UNIPHIER_PIN_PULL_DOWN), 157 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 157 156, UNIPHIER_PIN_PULL_UP), 160 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 160 157, UNIPHIER_PIN_PULL_UP), 163 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 163 158, UNIPHIER_PIN_PULL_UP), 166 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 166 159, UNIPHIER_PIN_PULL_UP), 169 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 169 160, UNIPHIER_PIN_PULL_UP), 172 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 172 161, UNIPHIER_PIN_PULL_UP), 175 173 UNIPHIER_PINCTRL_PIN(50, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 176 - 51, UNIPHIER_PIN_DRV_4_8, 174 + 51, UNIPHIER_PIN_DRV_1BIT, 177 175 51, UNIPHIER_PIN_PULL_UP), 178 176 UNIPHIER_PINCTRL_PIN(51, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 179 - 52, UNIPHIER_PIN_DRV_4_8, 177 + 52, UNIPHIER_PIN_DRV_1BIT, 180 178 52, UNIPHIER_PIN_PULL_UP), 181 179 UNIPHIER_PINCTRL_PIN(52, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 182 - 53, UNIPHIER_PIN_DRV_4_8, 180 + 53, UNIPHIER_PIN_DRV_1BIT, 183 181 53, UNIPHIER_PIN_PULL_UP), 184 182 UNIPHIER_PINCTRL_PIN(53, "USB0VBUS", 0, 185 - 54, UNIPHIER_PIN_DRV_4_8, 183 + 54, UNIPHIER_PIN_DRV_1BIT, 186 184 54, UNIPHIER_PIN_PULL_DOWN), 187 185 UNIPHIER_PINCTRL_PIN(54, "USB0OD", 0, 188 - 55, UNIPHIER_PIN_DRV_4_8, 186 + 55, UNIPHIER_PIN_DRV_1BIT, 189 187 55, UNIPHIER_PIN_PULL_DOWN), 190 188 UNIPHIER_PINCTRL_PIN(55, "USB1VBUS", 0, 191 - 56, UNIPHIER_PIN_DRV_4_8, 189 + 56, UNIPHIER_PIN_DRV_1BIT, 192 190 56, UNIPHIER_PIN_PULL_DOWN), 193 191 UNIPHIER_PINCTRL_PIN(56, "USB1OD", 0, 194 - 57, UNIPHIER_PIN_DRV_4_8, 192 + 57, UNIPHIER_PIN_DRV_1BIT, 195 193 57, UNIPHIER_PIN_PULL_DOWN), 196 194 UNIPHIER_PINCTRL_PIN(57, "PCRESET", 0, 197 - 58, UNIPHIER_PIN_DRV_4_8, 195 + 58, UNIPHIER_PIN_DRV_1BIT, 198 196 58, UNIPHIER_PIN_PULL_DOWN), 199 197 UNIPHIER_PINCTRL_PIN(58, "PCREG", 0, 200 - 59, UNIPHIER_PIN_DRV_4_8, 198 + 59, UNIPHIER_PIN_DRV_1BIT, 201 199 59, UNIPHIER_PIN_PULL_DOWN), 202 200 UNIPHIER_PINCTRL_PIN(59, "PCCE2", 0, 203 - 60, UNIPHIER_PIN_DRV_4_8, 201 + 60, UNIPHIER_PIN_DRV_1BIT, 204 202 60, UNIPHIER_PIN_PULL_DOWN), 205 203 UNIPHIER_PINCTRL_PIN(60, "PCVS1", 0, 206 - 61, UNIPHIER_PIN_DRV_4_8, 204 + 61, UNIPHIER_PIN_DRV_1BIT, 207 205 61, UNIPHIER_PIN_PULL_DOWN), 208 206 UNIPHIER_PINCTRL_PIN(61, "PCCD2", 0, 209 - 62, UNIPHIER_PIN_DRV_4_8, 207 + 62, UNIPHIER_PIN_DRV_1BIT, 210 208 62, UNIPHIER_PIN_PULL_DOWN), 211 209 UNIPHIER_PINCTRL_PIN(62, "PCCD1", 0, 212 - 63, UNIPHIER_PIN_DRV_4_8, 210 + 63, UNIPHIER_PIN_DRV_1BIT, 213 211 63, UNIPHIER_PIN_PULL_DOWN), 214 212 UNIPHIER_PINCTRL_PIN(63, "PCREADY", 0, 215 - 64, UNIPHIER_PIN_DRV_4_8, 213 + 64, UNIPHIER_PIN_DRV_1BIT, 216 214 64, UNIPHIER_PIN_PULL_DOWN), 217 215 UNIPHIER_PINCTRL_PIN(64, "PCDOE", 0, 218 - 65, UNIPHIER_PIN_DRV_4_8, 216 + 65, UNIPHIER_PIN_DRV_1BIT, 219 217 65, UNIPHIER_PIN_PULL_DOWN), 220 218 UNIPHIER_PINCTRL_PIN(65, "PCCE1", 0, 221 - 66, UNIPHIER_PIN_DRV_4_8, 219 + 66, UNIPHIER_PIN_DRV_1BIT, 222 220 66, UNIPHIER_PIN_PULL_DOWN), 223 221 UNIPHIER_PINCTRL_PIN(66, "PCWE", 0, 224 - 67, UNIPHIER_PIN_DRV_4_8, 222 + 67, UNIPHIER_PIN_DRV_1BIT, 225 223 67, UNIPHIER_PIN_PULL_DOWN), 226 224 UNIPHIER_PINCTRL_PIN(67, "PCOE", 0, 227 - 68, UNIPHIER_PIN_DRV_4_8, 225 + 68, UNIPHIER_PIN_DRV_1BIT, 228 226 68, UNIPHIER_PIN_PULL_DOWN), 229 227 UNIPHIER_PINCTRL_PIN(68, "PCWAIT", 0, 230 - 69, UNIPHIER_PIN_DRV_4_8, 228 + 69, UNIPHIER_PIN_DRV_1BIT, 231 229 69, UNIPHIER_PIN_PULL_DOWN), 232 230 UNIPHIER_PINCTRL_PIN(69, "PCIOWR", 0, 233 - 70, UNIPHIER_PIN_DRV_4_8, 231 + 70, UNIPHIER_PIN_DRV_1BIT, 234 232 70, UNIPHIER_PIN_PULL_DOWN), 235 233 UNIPHIER_PINCTRL_PIN(70, "PCIORD", 0, 236 - 71, UNIPHIER_PIN_DRV_4_8, 234 + 71, UNIPHIER_PIN_DRV_1BIT, 237 235 71, UNIPHIER_PIN_PULL_DOWN), 238 236 UNIPHIER_PINCTRL_PIN(71, "HS0DIN0", 0, 239 - 72, UNIPHIER_PIN_DRV_4_8, 237 + 72, UNIPHIER_PIN_DRV_1BIT, 240 238 72, UNIPHIER_PIN_PULL_DOWN), 241 239 UNIPHIER_PINCTRL_PIN(72, "HS0DIN1", 0, 242 - 73, UNIPHIER_PIN_DRV_4_8, 240 + 73, UNIPHIER_PIN_DRV_1BIT, 243 241 73, UNIPHIER_PIN_PULL_DOWN), 244 242 UNIPHIER_PINCTRL_PIN(73, "HS0DIN2", 0, 245 - 74, UNIPHIER_PIN_DRV_4_8, 243 + 74, UNIPHIER_PIN_DRV_1BIT, 246 244 74, UNIPHIER_PIN_PULL_DOWN), 247 245 UNIPHIER_PINCTRL_PIN(74, "HS0DIN3", 0, 248 - 75, UNIPHIER_PIN_DRV_4_8, 246 + 75, UNIPHIER_PIN_DRV_1BIT, 249 247 75, UNIPHIER_PIN_PULL_DOWN), 250 248 UNIPHIER_PINCTRL_PIN(75, "HS0DIN4", 0, 251 - 76, UNIPHIER_PIN_DRV_4_8, 249 + 76, UNIPHIER_PIN_DRV_1BIT, 252 250 76, UNIPHIER_PIN_PULL_DOWN), 253 251 UNIPHIER_PINCTRL_PIN(76, "HS0DIN5", 0, 254 - 77, UNIPHIER_PIN_DRV_4_8, 252 + 77, UNIPHIER_PIN_DRV_1BIT, 255 253 77, UNIPHIER_PIN_PULL_DOWN), 256 254 UNIPHIER_PINCTRL_PIN(77, "HS0DIN6", 0, 257 - 78, UNIPHIER_PIN_DRV_4_8, 255 + 78, UNIPHIER_PIN_DRV_1BIT, 258 256 78, UNIPHIER_PIN_PULL_DOWN), 259 257 UNIPHIER_PINCTRL_PIN(78, "HS0DIN7", 0, 260 - 79, UNIPHIER_PIN_DRV_4_8, 258 + 79, UNIPHIER_PIN_DRV_1BIT, 261 259 79, UNIPHIER_PIN_PULL_DOWN), 262 260 UNIPHIER_PINCTRL_PIN(79, "HS0BCLKIN", 0, 263 - 80, UNIPHIER_PIN_DRV_4_8, 261 + 80, UNIPHIER_PIN_DRV_1BIT, 264 262 80, UNIPHIER_PIN_PULL_DOWN), 265 263 UNIPHIER_PINCTRL_PIN(80, "HS0VALIN", 0, 266 - 81, UNIPHIER_PIN_DRV_4_8, 264 + 81, UNIPHIER_PIN_DRV_1BIT, 267 265 81, UNIPHIER_PIN_PULL_DOWN), 268 266 UNIPHIER_PINCTRL_PIN(81, "HS0SYNCIN", 0, 269 - 82, UNIPHIER_PIN_DRV_4_8, 267 + 82, UNIPHIER_PIN_DRV_1BIT, 270 268 82, UNIPHIER_PIN_PULL_DOWN), 271 269 UNIPHIER_PINCTRL_PIN(82, "HSDOUT0", 0, 272 - 83, UNIPHIER_PIN_DRV_4_8, 270 + 83, UNIPHIER_PIN_DRV_1BIT, 273 271 83, UNIPHIER_PIN_PULL_DOWN), 274 272 UNIPHIER_PINCTRL_PIN(83, "HSDOUT1", 0, 275 - 84, UNIPHIER_PIN_DRV_4_8, 273 + 84, UNIPHIER_PIN_DRV_1BIT, 276 274 84, UNIPHIER_PIN_PULL_DOWN), 277 275 UNIPHIER_PINCTRL_PIN(84, "HSDOUT2", 0, 278 - 85, UNIPHIER_PIN_DRV_4_8, 276 + 85, UNIPHIER_PIN_DRV_1BIT, 279 277 85, UNIPHIER_PIN_PULL_DOWN), 280 278 UNIPHIER_PINCTRL_PIN(85, "HSDOUT3", 0, 281 - 86, UNIPHIER_PIN_DRV_4_8, 279 + 86, UNIPHIER_PIN_DRV_1BIT, 282 280 86, UNIPHIER_PIN_PULL_DOWN), 283 281 UNIPHIER_PINCTRL_PIN(86, "HSDOUT4", 0, 284 - 87, UNIPHIER_PIN_DRV_4_8, 282 + 87, UNIPHIER_PIN_DRV_1BIT, 285 283 87, UNIPHIER_PIN_PULL_DOWN), 286 284 UNIPHIER_PINCTRL_PIN(87, "HSDOUT5", 0, 287 - 88, UNIPHIER_PIN_DRV_4_8, 285 + 88, UNIPHIER_PIN_DRV_1BIT, 288 286 88, UNIPHIER_PIN_PULL_DOWN), 289 287 UNIPHIER_PINCTRL_PIN(88, "HSDOUT6", 0, 290 - 89, UNIPHIER_PIN_DRV_4_8, 288 + 89, UNIPHIER_PIN_DRV_1BIT, 291 289 89, UNIPHIER_PIN_PULL_DOWN), 292 290 UNIPHIER_PINCTRL_PIN(89, "HSDOUT7", 0, 293 - 90, UNIPHIER_PIN_DRV_4_8, 291 + 90, UNIPHIER_PIN_DRV_1BIT, 294 292 90, UNIPHIER_PIN_PULL_DOWN), 295 293 UNIPHIER_PINCTRL_PIN(90, "HSBCLKOUT", 0, 296 - 91, UNIPHIER_PIN_DRV_4_8, 294 + 91, UNIPHIER_PIN_DRV_1BIT, 297 295 91, UNIPHIER_PIN_PULL_DOWN), 298 296 UNIPHIER_PINCTRL_PIN(91, "HSVALOUT", 0, 299 - 92, UNIPHIER_PIN_DRV_4_8, 297 + 92, UNIPHIER_PIN_DRV_1BIT, 300 298 92, UNIPHIER_PIN_PULL_DOWN), 301 299 UNIPHIER_PINCTRL_PIN(92, "HSSYNCOUT", 0, 302 - 93, UNIPHIER_PIN_DRV_4_8, 300 + 93, UNIPHIER_PIN_DRV_1BIT, 303 301 93, UNIPHIER_PIN_PULL_DOWN), 304 302 UNIPHIER_PINCTRL_PIN(93, "AGCI", 3, 305 - -1, UNIPHIER_PIN_DRV_FIXED_4, 303 + -1, UNIPHIER_PIN_DRV_FIXED4, 306 304 162, UNIPHIER_PIN_PULL_DOWN), 307 305 UNIPHIER_PINCTRL_PIN(94, "AGCR", 4, 308 - -1, UNIPHIER_PIN_DRV_FIXED_4, 306 + -1, UNIPHIER_PIN_DRV_FIXED4, 309 307 163, UNIPHIER_PIN_PULL_DOWN), 310 308 UNIPHIER_PINCTRL_PIN(95, "AGCBS", 5, 311 - -1, UNIPHIER_PIN_DRV_FIXED_4, 309 + -1, UNIPHIER_PIN_DRV_FIXED4, 312 310 164, UNIPHIER_PIN_PULL_DOWN), 313 311 UNIPHIER_PINCTRL_PIN(96, "IECOUT", 0, 314 - 94, UNIPHIER_PIN_DRV_4_8, 312 + 94, UNIPHIER_PIN_DRV_1BIT, 315 313 94, UNIPHIER_PIN_PULL_DOWN), 316 314 UNIPHIER_PINCTRL_PIN(97, "ASMCK", 0, 317 - 95, UNIPHIER_PIN_DRV_4_8, 315 + 95, UNIPHIER_PIN_DRV_1BIT, 318 316 95, UNIPHIER_PIN_PULL_DOWN), 319 317 UNIPHIER_PINCTRL_PIN(98, "ABCKO", UNIPHIER_PIN_IECTRL_NONE, 320 - 96, UNIPHIER_PIN_DRV_4_8, 318 + 96, UNIPHIER_PIN_DRV_1BIT, 321 319 96, UNIPHIER_PIN_PULL_DOWN), 322 320 UNIPHIER_PINCTRL_PIN(99, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE, 323 - 97, UNIPHIER_PIN_DRV_4_8, 321 + 97, UNIPHIER_PIN_DRV_1BIT, 324 322 97, UNIPHIER_PIN_PULL_DOWN), 325 323 UNIPHIER_PINCTRL_PIN(100, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE, 326 - 98, UNIPHIER_PIN_DRV_4_8, 324 + 98, UNIPHIER_PIN_DRV_1BIT, 327 325 98, UNIPHIER_PIN_PULL_DOWN), 328 326 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0, 329 - 99, UNIPHIER_PIN_DRV_4_8, 327 + 99, UNIPHIER_PIN_DRV_1BIT, 330 328 99, UNIPHIER_PIN_PULL_DOWN), 331 329 UNIPHIER_PINCTRL_PIN(102, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 332 - -1, UNIPHIER_PIN_DRV_FIXED_4, 330 + -1, UNIPHIER_PIN_DRV_FIXED4, 333 331 -1, UNIPHIER_PIN_PULL_NONE), 334 332 UNIPHIER_PINCTRL_PIN(103, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 335 - -1, UNIPHIER_PIN_DRV_FIXED_4, 333 + -1, UNIPHIER_PIN_DRV_FIXED4, 336 334 -1, UNIPHIER_PIN_PULL_NONE), 337 335 UNIPHIER_PINCTRL_PIN(104, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 338 - -1, UNIPHIER_PIN_DRV_FIXED_4, 336 + -1, UNIPHIER_PIN_DRV_FIXED4, 339 337 -1, UNIPHIER_PIN_PULL_NONE), 340 338 UNIPHIER_PINCTRL_PIN(105, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 341 - -1, UNIPHIER_PIN_DRV_FIXED_4, 339 + -1, UNIPHIER_PIN_DRV_FIXED4, 342 340 -1, UNIPHIER_PIN_PULL_NONE), 343 341 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", UNIPHIER_PIN_IECTRL_NONE, 344 - -1, UNIPHIER_PIN_DRV_FIXED_4, 342 + -1, UNIPHIER_PIN_DRV_FIXED4, 345 343 -1, UNIPHIER_PIN_PULL_NONE), 346 344 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", UNIPHIER_PIN_IECTRL_NONE, 347 - -1, UNIPHIER_PIN_DRV_FIXED_4, 345 + -1, UNIPHIER_PIN_DRV_FIXED4, 348 346 -1, UNIPHIER_PIN_PULL_NONE), 349 347 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", UNIPHIER_PIN_IECTRL_NONE, 350 - -1, UNIPHIER_PIN_DRV_FIXED_4, 348 + -1, UNIPHIER_PIN_DRV_FIXED4, 351 349 -1, UNIPHIER_PIN_PULL_NONE), 352 350 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", UNIPHIER_PIN_IECTRL_NONE, 353 - -1, UNIPHIER_PIN_DRV_FIXED_4, 351 + -1, UNIPHIER_PIN_DRV_FIXED4, 354 352 -1, UNIPHIER_PIN_PULL_NONE), 355 353 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE, 356 - 100, UNIPHIER_PIN_DRV_4_8, 354 + 100, UNIPHIER_PIN_DRV_1BIT, 357 355 100, UNIPHIER_PIN_PULL_UP), 358 356 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE, 359 - 101, UNIPHIER_PIN_DRV_4_8, 357 + 101, UNIPHIER_PIN_DRV_1BIT, 360 358 101, UNIPHIER_PIN_PULL_UP), 361 359 UNIPHIER_PINCTRL_PIN(112, "HIN", 1, 362 - -1, UNIPHIER_PIN_DRV_FIXED_5, 360 + -1, UNIPHIER_PIN_DRV_FIXED5, 363 361 -1, UNIPHIER_PIN_PULL_NONE), 364 362 UNIPHIER_PINCTRL_PIN(113, "VIN", 2, 365 - -1, UNIPHIER_PIN_DRV_FIXED_5, 363 + -1, UNIPHIER_PIN_DRV_FIXED5, 366 364 -1, UNIPHIER_PIN_PULL_NONE), 367 365 UNIPHIER_PINCTRL_PIN(114, "TCON0", UNIPHIER_PIN_IECTRL_NONE, 368 - 102, UNIPHIER_PIN_DRV_4_8, 366 + 102, UNIPHIER_PIN_DRV_1BIT, 369 367 102, UNIPHIER_PIN_PULL_DOWN), 370 368 UNIPHIER_PINCTRL_PIN(115, "TCON1", UNIPHIER_PIN_IECTRL_NONE, 371 - 103, UNIPHIER_PIN_DRV_4_8, 369 + 103, UNIPHIER_PIN_DRV_1BIT, 372 370 103, UNIPHIER_PIN_PULL_DOWN), 373 371 UNIPHIER_PINCTRL_PIN(116, "TCON2", UNIPHIER_PIN_IECTRL_NONE, 374 - 104, UNIPHIER_PIN_DRV_4_8, 372 + 104, UNIPHIER_PIN_DRV_1BIT, 375 373 104, UNIPHIER_PIN_PULL_DOWN), 376 374 UNIPHIER_PINCTRL_PIN(117, "TCON3", UNIPHIER_PIN_IECTRL_NONE, 377 - 105, UNIPHIER_PIN_DRV_4_8, 375 + 105, UNIPHIER_PIN_DRV_1BIT, 378 376 105, UNIPHIER_PIN_PULL_DOWN), 379 377 UNIPHIER_PINCTRL_PIN(118, "TCON4", UNIPHIER_PIN_IECTRL_NONE, 380 - 106, UNIPHIER_PIN_DRV_4_8, 378 + 106, UNIPHIER_PIN_DRV_1BIT, 381 379 106, UNIPHIER_PIN_PULL_DOWN), 382 380 UNIPHIER_PINCTRL_PIN(119, "TCON5", UNIPHIER_PIN_IECTRL_NONE, 383 - 107, UNIPHIER_PIN_DRV_4_8, 381 + 107, UNIPHIER_PIN_DRV_1BIT, 384 382 107, UNIPHIER_PIN_PULL_DOWN), 385 383 UNIPHIER_PINCTRL_PIN(120, "TCON6", 0, 386 - 108, UNIPHIER_PIN_DRV_4_8, 384 + 108, UNIPHIER_PIN_DRV_1BIT, 387 385 108, UNIPHIER_PIN_PULL_DOWN), 388 386 UNIPHIER_PINCTRL_PIN(121, "TCON7", 0, 389 - 109, UNIPHIER_PIN_DRV_4_8, 387 + 109, UNIPHIER_PIN_DRV_1BIT, 390 388 109, UNIPHIER_PIN_PULL_DOWN), 391 389 UNIPHIER_PINCTRL_PIN(122, "PWMA", 0, 392 - 110, UNIPHIER_PIN_DRV_4_8, 390 + 110, UNIPHIER_PIN_DRV_1BIT, 393 391 110, UNIPHIER_PIN_PULL_DOWN), 394 392 UNIPHIER_PINCTRL_PIN(123, "XIRQ1", 0, 395 - 111, UNIPHIER_PIN_DRV_4_8, 393 + 111, UNIPHIER_PIN_DRV_1BIT, 396 394 111, UNIPHIER_PIN_PULL_DOWN), 397 395 UNIPHIER_PINCTRL_PIN(124, "XIRQ2", 0, 398 - 112, UNIPHIER_PIN_DRV_4_8, 396 + 112, UNIPHIER_PIN_DRV_1BIT, 399 397 112, UNIPHIER_PIN_PULL_DOWN), 400 398 UNIPHIER_PINCTRL_PIN(125, "XIRQ3", 0, 401 - 113, UNIPHIER_PIN_DRV_4_8, 399 + 113, UNIPHIER_PIN_DRV_1BIT, 402 400 113, UNIPHIER_PIN_PULL_DOWN), 403 401 UNIPHIER_PINCTRL_PIN(126, "XIRQ4", 0, 404 - 114, UNIPHIER_PIN_DRV_4_8, 402 + 114, UNIPHIER_PIN_DRV_1BIT, 405 403 114, UNIPHIER_PIN_PULL_DOWN), 406 404 UNIPHIER_PINCTRL_PIN(127, "XIRQ5", 0, 407 - 115, UNIPHIER_PIN_DRV_4_8, 405 + 115, UNIPHIER_PIN_DRV_1BIT, 408 406 115, UNIPHIER_PIN_PULL_DOWN), 409 407 UNIPHIER_PINCTRL_PIN(128, "XIRQ6", 0, 410 - 116, UNIPHIER_PIN_DRV_4_8, 408 + 116, UNIPHIER_PIN_DRV_1BIT, 411 409 116, UNIPHIER_PIN_PULL_DOWN), 412 410 UNIPHIER_PINCTRL_PIN(129, "XIRQ7", 0, 413 - 117, UNIPHIER_PIN_DRV_4_8, 411 + 117, UNIPHIER_PIN_DRV_1BIT, 414 412 117, UNIPHIER_PIN_PULL_DOWN), 415 413 UNIPHIER_PINCTRL_PIN(130, "XIRQ8", 0, 416 - 118, UNIPHIER_PIN_DRV_4_8, 414 + 118, UNIPHIER_PIN_DRV_1BIT, 417 415 118, UNIPHIER_PIN_PULL_DOWN), 418 416 UNIPHIER_PINCTRL_PIN(131, "XIRQ9", 0, 419 - 119, UNIPHIER_PIN_DRV_4_8, 417 + 119, UNIPHIER_PIN_DRV_1BIT, 420 418 119, UNIPHIER_PIN_PULL_DOWN), 421 419 UNIPHIER_PINCTRL_PIN(132, "XIRQ10", 0, 422 - 120, UNIPHIER_PIN_DRV_4_8, 420 + 120, UNIPHIER_PIN_DRV_1BIT, 423 421 120, UNIPHIER_PIN_PULL_DOWN), 424 422 UNIPHIER_PINCTRL_PIN(133, "XIRQ11", 0, 425 - 121, UNIPHIER_PIN_DRV_4_8, 423 + 121, UNIPHIER_PIN_DRV_1BIT, 426 424 121, UNIPHIER_PIN_PULL_DOWN), 427 425 UNIPHIER_PINCTRL_PIN(134, "XIRQ14", 0, 428 - 122, UNIPHIER_PIN_DRV_4_8, 426 + 122, UNIPHIER_PIN_DRV_1BIT, 429 427 122, UNIPHIER_PIN_PULL_DOWN), 430 428 UNIPHIER_PINCTRL_PIN(135, "PORT00", 0, 431 - 123, UNIPHIER_PIN_DRV_4_8, 429 + 123, UNIPHIER_PIN_DRV_1BIT, 432 430 123, UNIPHIER_PIN_PULL_DOWN), 433 431 UNIPHIER_PINCTRL_PIN(136, "PORT01", 0, 434 - 124, UNIPHIER_PIN_DRV_4_8, 432 + 124, UNIPHIER_PIN_DRV_1BIT, 435 433 124, UNIPHIER_PIN_PULL_DOWN), 436 434 UNIPHIER_PINCTRL_PIN(137, "PORT02", 0, 437 - 125, UNIPHIER_PIN_DRV_4_8, 435 + 125, UNIPHIER_PIN_DRV_1BIT, 438 436 125, UNIPHIER_PIN_PULL_DOWN), 439 437 UNIPHIER_PINCTRL_PIN(138, "PORT03", 0, 440 - 126, UNIPHIER_PIN_DRV_4_8, 438 + 126, UNIPHIER_PIN_DRV_1BIT, 441 439 126, UNIPHIER_PIN_PULL_DOWN), 442 440 UNIPHIER_PINCTRL_PIN(139, "PORT04", 0, 443 - 127, UNIPHIER_PIN_DRV_4_8, 441 + 127, UNIPHIER_PIN_DRV_1BIT, 444 442 127, UNIPHIER_PIN_PULL_DOWN), 445 443 UNIPHIER_PINCTRL_PIN(140, "PORT05", 0, 446 - 128, UNIPHIER_PIN_DRV_4_8, 444 + 128, UNIPHIER_PIN_DRV_1BIT, 447 445 128, UNIPHIER_PIN_PULL_DOWN), 448 446 UNIPHIER_PINCTRL_PIN(141, "PORT06", 0, 449 - 129, UNIPHIER_PIN_DRV_4_8, 447 + 129, UNIPHIER_PIN_DRV_1BIT, 450 448 129, UNIPHIER_PIN_PULL_DOWN), 451 449 UNIPHIER_PINCTRL_PIN(142, "PORT07", 0, 452 - 130, UNIPHIER_PIN_DRV_4_8, 450 + 130, UNIPHIER_PIN_DRV_1BIT, 453 451 130, UNIPHIER_PIN_PULL_DOWN), 454 452 UNIPHIER_PINCTRL_PIN(143, "PORT10", 0, 455 - 131, UNIPHIER_PIN_DRV_4_8, 453 + 131, UNIPHIER_PIN_DRV_1BIT, 456 454 131, UNIPHIER_PIN_PULL_DOWN), 457 455 UNIPHIER_PINCTRL_PIN(144, "PORT11", 0, 458 - 132, UNIPHIER_PIN_DRV_4_8, 456 + 132, UNIPHIER_PIN_DRV_1BIT, 459 457 132, UNIPHIER_PIN_PULL_DOWN), 460 458 UNIPHIER_PINCTRL_PIN(145, "PORT12", 0, 461 - 133, UNIPHIER_PIN_DRV_4_8, 459 + 133, UNIPHIER_PIN_DRV_1BIT, 462 460 133, UNIPHIER_PIN_PULL_DOWN), 463 461 UNIPHIER_PINCTRL_PIN(146, "PORT13", 0, 464 - 134, UNIPHIER_PIN_DRV_4_8, 462 + 134, UNIPHIER_PIN_DRV_1BIT, 465 463 134, UNIPHIER_PIN_PULL_DOWN), 466 464 UNIPHIER_PINCTRL_PIN(147, "PORT14", 0, 467 - 135, UNIPHIER_PIN_DRV_4_8, 465 + 135, UNIPHIER_PIN_DRV_1BIT, 468 466 135, UNIPHIER_PIN_PULL_DOWN), 469 467 UNIPHIER_PINCTRL_PIN(148, "PORT15", 0, 470 - 136, UNIPHIER_PIN_DRV_4_8, 468 + 136, UNIPHIER_PIN_DRV_1BIT, 471 469 136, UNIPHIER_PIN_PULL_DOWN), 472 470 UNIPHIER_PINCTRL_PIN(149, "PORT16", 0, 473 - 137, UNIPHIER_PIN_DRV_4_8, 471 + 137, UNIPHIER_PIN_DRV_1BIT, 474 472 137, UNIPHIER_PIN_PULL_DOWN), 475 473 UNIPHIER_PINCTRL_PIN(150, "PORT17", UNIPHIER_PIN_IECTRL_NONE, 476 - 138, UNIPHIER_PIN_DRV_4_8, 474 + 138, UNIPHIER_PIN_DRV_1BIT, 477 475 138, UNIPHIER_PIN_PULL_DOWN), 478 476 UNIPHIER_PINCTRL_PIN(151, "PORT20", 0, 479 - 139, UNIPHIER_PIN_DRV_4_8, 477 + 139, UNIPHIER_PIN_DRV_1BIT, 480 478 139, UNIPHIER_PIN_PULL_DOWN), 481 479 UNIPHIER_PINCTRL_PIN(152, "PORT21", 0, 482 - 140, UNIPHIER_PIN_DRV_4_8, 480 + 140, UNIPHIER_PIN_DRV_1BIT, 483 481 140, UNIPHIER_PIN_PULL_DOWN), 484 482 UNIPHIER_PINCTRL_PIN(153, "PORT22", 0, 485 - 141, UNIPHIER_PIN_DRV_4_8, 483 + 141, UNIPHIER_PIN_DRV_1BIT, 486 484 141, UNIPHIER_PIN_PULL_DOWN), 487 485 UNIPHIER_PINCTRL_PIN(154, "PORT23", 0, 488 - 142, UNIPHIER_PIN_DRV_4_8, 486 + 142, UNIPHIER_PIN_DRV_1BIT, 489 487 142, UNIPHIER_PIN_PULL_DOWN), 490 488 UNIPHIER_PINCTRL_PIN(155, "PORT24", UNIPHIER_PIN_IECTRL_NONE, 491 - 143, UNIPHIER_PIN_DRV_4_8, 489 + 143, UNIPHIER_PIN_DRV_1BIT, 492 490 143, UNIPHIER_PIN_PULL_DOWN), 493 491 UNIPHIER_PINCTRL_PIN(156, "PORT25", 0, 494 - 144, UNIPHIER_PIN_DRV_4_8, 492 + 144, UNIPHIER_PIN_DRV_1BIT, 495 493 144, UNIPHIER_PIN_PULL_DOWN), 496 494 UNIPHIER_PINCTRL_PIN(157, "PORT26", 0, 497 - 145, UNIPHIER_PIN_DRV_4_8, 495 + 145, UNIPHIER_PIN_DRV_1BIT, 498 496 145, UNIPHIER_PIN_PULL_DOWN), 499 497 UNIPHIER_PINCTRL_PIN(158, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 500 - 31, UNIPHIER_PIN_DRV_4_8, 498 + 31, UNIPHIER_PIN_DRV_1BIT, 501 499 31, UNIPHIER_PIN_PULL_UP), 502 500 UNIPHIER_PINCTRL_PIN(159, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 503 - 32, UNIPHIER_PIN_DRV_4_8, 501 + 32, UNIPHIER_PIN_DRV_1BIT, 504 502 32, UNIPHIER_PIN_PULL_UP), 505 503 UNIPHIER_PINCTRL_PIN(160, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 506 - 33, UNIPHIER_PIN_DRV_4_8, 504 + 33, UNIPHIER_PIN_DRV_1BIT, 507 505 33, UNIPHIER_PIN_PULL_DOWN), 508 506 UNIPHIER_PINCTRL_PIN(161, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 509 - 34, UNIPHIER_PIN_DRV_4_8, 507 + 34, UNIPHIER_PIN_DRV_1BIT, 510 508 34, UNIPHIER_PIN_PULL_DOWN), 511 509 UNIPHIER_PINCTRL_PIN(162, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 512 - 35, UNIPHIER_PIN_DRV_4_8, 510 + 35, UNIPHIER_PIN_DRV_1BIT, 513 511 35, UNIPHIER_PIN_PULL_DOWN), 514 512 UNIPHIER_PINCTRL_PIN(163, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 515 - 36, UNIPHIER_PIN_DRV_4_8, 513 + 36, UNIPHIER_PIN_DRV_1BIT, 516 514 36, UNIPHIER_PIN_PULL_UP), 517 515 UNIPHIER_PINCTRL_PIN(164, "NANDRYBY0", UNIPHIER_PIN_IECTRL_NONE, 518 - 37, UNIPHIER_PIN_DRV_4_8, 516 + 37, UNIPHIER_PIN_DRV_1BIT, 519 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 522 551 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; 523 - static const unsigned emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1}; 552 + static const int emmc_muxvals[] = {0, 1, 1, 1, 1, 1, 1}; 524 553 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; 525 - static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 554 + static const int emmc_dat8_muxvals[] = {1, 1, 1, 1}; 555 + static 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}; 558 + static 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}; 560 + static const unsigned ether_rmii_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40, 561 + 41, 42, 43}; 562 + static const int ether_rmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 526 563 static const unsigned i2c0_pins[] = {102, 103}; 527 - static const unsigned i2c0_muxvals[] = {0, 0}; 564 + static const int i2c0_muxvals[] = {0, 0}; 528 565 static const unsigned i2c1_pins[] = {104, 105}; 529 - static const unsigned i2c1_muxvals[] = {0, 0}; 566 + static const int i2c1_muxvals[] = {0, 0}; 530 567 static const unsigned i2c2_pins[] = {108, 109}; 531 - static const unsigned i2c2_muxvals[] = {2, 2}; 568 + static const int i2c2_muxvals[] = {2, 2}; 532 569 static const unsigned i2c3_pins[] = {108, 109}; 533 - static const unsigned i2c3_muxvals[] = {3, 3}; 570 + static const int i2c3_muxvals[] = {3, 3}; 534 571 static const unsigned nand_pins[] = {24, 25, 26, 27, 28, 29, 30, 31, 158, 159, 535 572 160, 161, 162, 163, 164}; 536 - static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 537 - 0, 0}; 573 + static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 538 574 static const unsigned nand_cs1_pins[] = {22, 23}; 539 - static const unsigned nand_cs1_muxvals[] = {0, 0}; 575 + static const int nand_cs1_muxvals[] = {0, 0}; 540 576 static const unsigned sd_pins[] = {44, 45, 46, 47, 48, 49, 50, 51, 52}; 541 - static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 577 + static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 578 + static const unsigned system_bus_pins[] = {16, 17, 18, 19, 20, 165, 166, 167, 579 + 168, 169, 170, 171, 172, 173}; 580 + static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, 581 + -1, -1, -1}; 582 + static const unsigned system_bus_cs0_pins[] = {155}; 583 + static const int system_bus_cs0_muxvals[] = {1}; 584 + static const unsigned system_bus_cs1_pins[] = {174}; 585 + static const int system_bus_cs1_muxvals[] = {-1}; 586 + static const unsigned system_bus_cs2_pins[] = {64}; 587 + static const int system_bus_cs2_muxvals[] = {1}; 588 + static const unsigned system_bus_cs3_pins[] = {156}; 589 + static const int system_bus_cs3_muxvals[] = {1}; 542 590 static const unsigned uart0_pins[] = {85, 88}; 543 - static const unsigned uart0_muxvals[] = {1, 1}; 591 + static const int uart0_muxvals[] = {1, 1}; 544 592 static const unsigned uart1_pins[] = {155, 156}; 545 - static const unsigned uart1_muxvals[] = {13, 13}; 593 + static const int uart1_muxvals[] = {13, 13}; 546 594 static const unsigned uart1b_pins[] = {69, 70}; 547 - static const unsigned uart1b_muxvals[] = {23, 23}; 595 + static const int uart1b_muxvals[] = {23, 23}; 548 596 static const unsigned uart2_pins[] = {128, 129}; 549 - static const unsigned uart2_muxvals[] = {13, 13}; 597 + static const int uart2_muxvals[] = {13, 13}; 550 598 static const unsigned uart3_pins[] = {110, 111}; 551 - static const unsigned uart3_muxvals[] = {1, 1}; 599 + static const int uart3_muxvals[] = {1, 1}; 552 600 static const unsigned usb0_pins[] = {53, 54}; 553 - static const unsigned usb0_muxvals[] = {0, 0}; 601 + static const int usb0_muxvals[] = {0, 0}; 554 602 static const unsigned usb1_pins[] = {55, 56}; 555 - static const unsigned usb1_muxvals[] = {0, 0}; 603 + static const int usb1_muxvals[] = {0, 0}; 556 604 static const unsigned usb2_pins[] = {155, 156}; 557 - static const unsigned usb2_muxvals[] = {4, 4}; 605 + static const int usb2_muxvals[] = {4, 4}; 558 606 static const unsigned usb2b_pins[] = {67, 68}; 559 - static const unsigned usb2b_muxvals[] = {23, 23}; 607 + static const int usb2b_muxvals[] = {23, 23}; 560 608 static const unsigned port_range0_pins[] = { 561 609 135, 136, 137, 138, 139, 140, 141, 142, /* PORT0x */ 562 610 143, 144, 145, 146, 147, 148, 149, 150, /* PORT1x */ ··· 622 574 98, 99, 100, 6, 101, 114, 115, 116, /* PORT13x */ 623 575 103, 108, 21, 22, 23, 117, 118, 119, /* PORT14x */ 624 576 }; 625 - static const unsigned port_range0_muxvals[] = { 577 + static const int port_range0_muxvals[] = { 626 578 0, 0, 0, 0, 0, 0, 0, 0, /* PORT0x */ 627 579 0, 0, 0, 0, 0, 0, 0, 0, /* PORT1x */ 628 580 0, 0, 0, 0, 0, 0, 0, 15, /* PORT2x */ ··· 642 594 static const unsigned port_range1_pins[] = { 643 595 7, /* PORT166 */ 644 596 }; 645 - static const unsigned port_range1_muxvals[] = { 597 + static const int port_range1_muxvals[] = { 646 598 15, /* PORT166 */ 647 599 }; 648 600 static const unsigned xirq_range0_pins[] = { 649 601 151, 123, 124, 125, 126, 127, 128, 129, /* XIRQ0-7 */ 650 602 130, 131, 132, 133, 62, /* XIRQ8-12 */ 651 603 }; 652 - static const unsigned xirq_range0_muxvals[] = { 604 + static const int xirq_range0_muxvals[] = { 653 605 14, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */ 654 606 0, 0, 0, 0, 14, /* XIRQ8-12 */ 655 607 }; 656 608 static const unsigned xirq_range1_pins[] = { 657 609 134, 63, /* XIRQ14-15 */ 658 610 }; 659 - static const unsigned xirq_range1_muxvals[] = { 611 + static const int xirq_range1_muxvals[] = { 660 612 0, 14, /* XIRQ14-15 */ 661 613 }; 662 614 663 - static const struct uniphier_pinctrl_group ph1_ld4_groups[] = { 615 + static const struct uniphier_pinctrl_group uniphier_ld4_groups[] = { 664 616 UNIPHIER_PINCTRL_GROUP(emmc), 665 617 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 618 + UNIPHIER_PINCTRL_GROUP(ether_mii), 619 + UNIPHIER_PINCTRL_GROUP(ether_rmii), 666 620 UNIPHIER_PINCTRL_GROUP(i2c0), 667 621 UNIPHIER_PINCTRL_GROUP(i2c1), 668 622 UNIPHIER_PINCTRL_GROUP(i2c2), ··· 672 622 UNIPHIER_PINCTRL_GROUP(nand), 673 623 UNIPHIER_PINCTRL_GROUP(nand_cs1), 674 624 UNIPHIER_PINCTRL_GROUP(sd), 625 + UNIPHIER_PINCTRL_GROUP(system_bus), 626 + UNIPHIER_PINCTRL_GROUP(system_bus_cs0), 627 + UNIPHIER_PINCTRL_GROUP(system_bus_cs1), 628 + UNIPHIER_PINCTRL_GROUP(system_bus_cs2), 629 + UNIPHIER_PINCTRL_GROUP(system_bus_cs3), 675 630 UNIPHIER_PINCTRL_GROUP(uart0), 676 631 UNIPHIER_PINCTRL_GROUP(uart1), 677 632 UNIPHIER_PINCTRL_GROUP(uart1b), ··· 829 774 }; 830 775 831 776 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 777 + static const char * const ether_mii_groups[] = {"ether_mii"}; 778 + static const char * const ether_rmii_groups[] = {"ether_rmii"}; 832 779 static const char * const i2c0_groups[] = {"i2c0"}; 833 780 static const char * const i2c1_groups[] = {"i2c1"}; 834 781 static const char * const i2c2_groups[] = {"i2c2"}; 835 782 static const char * const i2c3_groups[] = {"i2c3"}; 836 783 static const char * const nand_groups[] = {"nand", "nand_cs1"}; 837 784 static const char * const sd_groups[] = {"sd"}; 785 + static const char * const system_bus_groups[] = {"system_bus", 786 + "system_bus_cs0", 787 + "system_bus_cs1", 788 + "system_bus_cs2", 789 + "system_bus_cs3"}; 838 790 static const char * const uart0_groups[] = {"uart0"}; 839 791 static const char * const uart1_groups[] = {"uart1", "uart1b"}; 840 792 static const char * const uart2_groups[] = {"uart2"}; ··· 890 828 "xirq12", /* none*/ "xirq14", "xirq15", 891 829 }; 892 830 893 - static const struct uniphier_pinmux_function ph1_ld4_functions[] = { 831 + static const struct uniphier_pinmux_function uniphier_ld4_functions[] = { 894 832 UNIPHIER_PINMUX_FUNCTION(emmc), 833 + UNIPHIER_PINMUX_FUNCTION(ether_mii), 834 + UNIPHIER_PINMUX_FUNCTION(ether_rmii), 895 835 UNIPHIER_PINMUX_FUNCTION(i2c0), 896 836 UNIPHIER_PINMUX_FUNCTION(i2c1), 897 837 UNIPHIER_PINMUX_FUNCTION(i2c2), 898 838 UNIPHIER_PINMUX_FUNCTION(i2c3), 899 839 UNIPHIER_PINMUX_FUNCTION(nand), 900 840 UNIPHIER_PINMUX_FUNCTION(sd), 841 + UNIPHIER_PINMUX_FUNCTION(system_bus), 901 842 UNIPHIER_PINMUX_FUNCTION(uart0), 902 843 UNIPHIER_PINMUX_FUNCTION(uart1), 903 844 UNIPHIER_PINMUX_FUNCTION(uart2), ··· 912 847 UNIPHIER_PINMUX_FUNCTION(xirq), 913 848 }; 914 849 915 - static struct uniphier_pinctrl_socdata ph1_ld4_pindata = { 916 - .groups = ph1_ld4_groups, 917 - .groups_count = ARRAY_SIZE(ph1_ld4_groups), 918 - .functions = ph1_ld4_functions, 919 - .functions_count = ARRAY_SIZE(ph1_ld4_functions), 920 - .mux_bits = 8, 921 - .reg_stride = 4, 922 - .load_pinctrl = false, 850 + static struct uniphier_pinctrl_socdata uniphier_ld4_pindata = { 851 + .pins = uniphier_ld4_pins, 852 + .npins = ARRAY_SIZE(uniphier_ld4_pins), 853 + .groups = uniphier_ld4_groups, 854 + .groups_count = ARRAY_SIZE(uniphier_ld4_groups), 855 + .functions = uniphier_ld4_functions, 856 + .functions_count = ARRAY_SIZE(uniphier_ld4_functions), 857 + .caps = 0, 923 858 }; 924 859 925 - static struct pinctrl_desc ph1_ld4_pinctrl_desc = { 926 - .name = DRIVER_NAME, 927 - .pins = ph1_ld4_pins, 928 - .npins = ARRAY_SIZE(ph1_ld4_pins), 929 - .owner = THIS_MODULE, 930 - }; 931 - 932 - static int ph1_ld4_pinctrl_probe(struct platform_device *pdev) 860 + static int uniphier_ld4_pinctrl_probe(struct platform_device *pdev) 933 861 { 934 - return uniphier_pinctrl_probe(pdev, &ph1_ld4_pinctrl_desc, 935 - &ph1_ld4_pindata); 862 + return uniphier_pinctrl_probe(pdev, &uniphier_ld4_pindata); 936 863 } 937 864 938 - static const struct of_device_id ph1_ld4_pinctrl_match[] = { 865 + static const struct of_device_id uniphier_ld4_pinctrl_match[] = { 866 + { .compatible = "socionext,uniphier-ld4-pinctrl" }, 939 867 { .compatible = "socionext,ph1-ld4-pinctrl" }, 940 868 { /* sentinel */ } 941 869 }; 942 - MODULE_DEVICE_TABLE(of, ph1_ld4_pinctrl_match); 870 + MODULE_DEVICE_TABLE(of, uniphier_ld4_pinctrl_match); 943 871 944 - static struct platform_driver ph1_ld4_pinctrl_driver = { 945 - .probe = ph1_ld4_pinctrl_probe, 872 + static struct platform_driver uniphier_ld4_pinctrl_driver = { 873 + .probe = uniphier_ld4_pinctrl_probe, 946 874 .driver = { 947 - .name = DRIVER_NAME, 948 - .of_match_table = ph1_ld4_pinctrl_match, 875 + .name = "uniphier-ld4-pinctrl", 876 + .of_match_table = uniphier_ld4_pinctrl_match, 949 877 }, 950 878 }; 951 - module_platform_driver(ph1_ld4_pinctrl_driver); 879 + module_platform_driver(uniphier_ld4_pinctrl_driver); 952 880 953 881 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 954 882 MODULE_DESCRIPTION("UniPhier PH1-LD4 pinctrl driver");
+320 -289
drivers/pinctrl/uniphier/pinctrl-uniphier-ld6b.c
··· 19 19 20 20 #include "pinctrl-uniphier.h" 21 21 22 - #define DRIVER_NAME "ph1-ld6b-pinctrl" 23 - 24 - static const struct pinctrl_pin_desc ph1_ld6b_pins[] = { 22 + static const struct pinctrl_pin_desc uniphier_ld6b_pins[] = { 25 23 UNIPHIER_PINCTRL_PIN(0, "ED0", UNIPHIER_PIN_IECTRL_NONE, 26 - 0, UNIPHIER_PIN_DRV_4_8, 24 + 0, UNIPHIER_PIN_DRV_1BIT, 27 25 0, UNIPHIER_PIN_PULL_DOWN), 28 26 UNIPHIER_PINCTRL_PIN(1, "ED1", UNIPHIER_PIN_IECTRL_NONE, 29 - 1, UNIPHIER_PIN_DRV_4_8, 27 + 1, UNIPHIER_PIN_DRV_1BIT, 30 28 1, UNIPHIER_PIN_PULL_DOWN), 31 29 UNIPHIER_PINCTRL_PIN(2, "ED2", UNIPHIER_PIN_IECTRL_NONE, 32 - 2, UNIPHIER_PIN_DRV_4_8, 30 + 2, UNIPHIER_PIN_DRV_1BIT, 33 31 2, UNIPHIER_PIN_PULL_DOWN), 34 32 UNIPHIER_PINCTRL_PIN(3, "ED3", UNIPHIER_PIN_IECTRL_NONE, 35 - 3, UNIPHIER_PIN_DRV_4_8, 33 + 3, UNIPHIER_PIN_DRV_1BIT, 36 34 3, UNIPHIER_PIN_PULL_DOWN), 37 35 UNIPHIER_PINCTRL_PIN(4, "ED4", UNIPHIER_PIN_IECTRL_NONE, 38 - 4, UNIPHIER_PIN_DRV_4_8, 36 + 4, UNIPHIER_PIN_DRV_1BIT, 39 37 4, UNIPHIER_PIN_PULL_DOWN), 40 38 UNIPHIER_PINCTRL_PIN(5, "ED5", UNIPHIER_PIN_IECTRL_NONE, 41 - 5, UNIPHIER_PIN_DRV_4_8, 39 + 5, UNIPHIER_PIN_DRV_1BIT, 42 40 5, UNIPHIER_PIN_PULL_DOWN), 43 41 UNIPHIER_PINCTRL_PIN(6, "ED6", UNIPHIER_PIN_IECTRL_NONE, 44 - 6, UNIPHIER_PIN_DRV_4_8, 42 + 6, UNIPHIER_PIN_DRV_1BIT, 45 43 6, UNIPHIER_PIN_PULL_DOWN), 46 44 UNIPHIER_PINCTRL_PIN(7, "ED7", UNIPHIER_PIN_IECTRL_NONE, 47 - 7, UNIPHIER_PIN_DRV_4_8, 45 + 7, UNIPHIER_PIN_DRV_1BIT, 48 46 7, UNIPHIER_PIN_PULL_DOWN), 49 47 UNIPHIER_PINCTRL_PIN(8, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 50 - 8, UNIPHIER_PIN_DRV_4_8, 48 + 8, UNIPHIER_PIN_DRV_1BIT, 51 49 8, UNIPHIER_PIN_PULL_DOWN), 52 50 UNIPHIER_PINCTRL_PIN(9, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 53 - 9, UNIPHIER_PIN_DRV_4_8, 51 + 9, UNIPHIER_PIN_DRV_1BIT, 54 52 9, UNIPHIER_PIN_PULL_DOWN), 55 53 UNIPHIER_PINCTRL_PIN(10, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 56 - 10, UNIPHIER_PIN_DRV_4_8, 54 + 10, UNIPHIER_PIN_DRV_1BIT, 57 55 10, UNIPHIER_PIN_PULL_DOWN), 58 56 UNIPHIER_PINCTRL_PIN(11, "ES0", UNIPHIER_PIN_IECTRL_NONE, 59 - 11, UNIPHIER_PIN_DRV_4_8, 57 + 11, UNIPHIER_PIN_DRV_1BIT, 60 58 11, UNIPHIER_PIN_PULL_DOWN), 61 59 UNIPHIER_PINCTRL_PIN(12, "ES1", UNIPHIER_PIN_IECTRL_NONE, 62 - 12, UNIPHIER_PIN_DRV_4_8, 60 + 12, UNIPHIER_PIN_DRV_1BIT, 63 61 12, UNIPHIER_PIN_PULL_DOWN), 64 62 UNIPHIER_PINCTRL_PIN(13, "ES2", UNIPHIER_PIN_IECTRL_NONE, 65 - 13, UNIPHIER_PIN_DRV_4_8, 63 + 13, UNIPHIER_PIN_DRV_1BIT, 66 64 13, UNIPHIER_PIN_PULL_DOWN), 67 65 UNIPHIER_PINCTRL_PIN(14, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 68 - 14, UNIPHIER_PIN_DRV_4_8, 66 + 14, UNIPHIER_PIN_DRV_1BIT, 69 67 14, UNIPHIER_PIN_PULL_DOWN), 70 68 UNIPHIER_PINCTRL_PIN(15, "PCA00", UNIPHIER_PIN_IECTRL_NONE, 71 - -1, UNIPHIER_PIN_DRV_FIXED_8, 69 + -1, UNIPHIER_PIN_DRV_FIXED8, 72 70 15, UNIPHIER_PIN_PULL_DOWN), 73 71 UNIPHIER_PINCTRL_PIN(16, "PCA01", UNIPHIER_PIN_IECTRL_NONE, 74 - -1, UNIPHIER_PIN_DRV_FIXED_8, 72 + -1, UNIPHIER_PIN_DRV_FIXED8, 75 73 16, UNIPHIER_PIN_PULL_DOWN), 76 74 UNIPHIER_PINCTRL_PIN(17, "PCA02", UNIPHIER_PIN_IECTRL_NONE, 77 - -1, UNIPHIER_PIN_DRV_FIXED_8, 75 + -1, UNIPHIER_PIN_DRV_FIXED8, 78 76 17, UNIPHIER_PIN_PULL_DOWN), 79 77 UNIPHIER_PINCTRL_PIN(18, "PCA03", UNIPHIER_PIN_IECTRL_NONE, 80 - -1, UNIPHIER_PIN_DRV_FIXED_8, 78 + -1, UNIPHIER_PIN_DRV_FIXED8, 81 79 18, UNIPHIER_PIN_PULL_DOWN), 82 80 UNIPHIER_PINCTRL_PIN(19, "PCA04", UNIPHIER_PIN_IECTRL_NONE, 83 - -1, UNIPHIER_PIN_DRV_FIXED_8, 81 + -1, UNIPHIER_PIN_DRV_FIXED8, 84 82 19, UNIPHIER_PIN_PULL_DOWN), 85 83 UNIPHIER_PINCTRL_PIN(20, "PCA05", UNIPHIER_PIN_IECTRL_NONE, 86 - -1, UNIPHIER_PIN_DRV_FIXED_8, 84 + -1, UNIPHIER_PIN_DRV_FIXED8, 87 85 20, UNIPHIER_PIN_PULL_DOWN), 88 86 UNIPHIER_PINCTRL_PIN(21, "PCA06", UNIPHIER_PIN_IECTRL_NONE, 89 - -1, UNIPHIER_PIN_DRV_FIXED_8, 87 + -1, UNIPHIER_PIN_DRV_FIXED8, 90 88 21, UNIPHIER_PIN_PULL_DOWN), 91 89 UNIPHIER_PINCTRL_PIN(22, "PCA07", UNIPHIER_PIN_IECTRL_NONE, 92 - -1, UNIPHIER_PIN_DRV_FIXED_8, 90 + -1, UNIPHIER_PIN_DRV_FIXED8, 93 91 22, UNIPHIER_PIN_PULL_DOWN), 94 92 UNIPHIER_PINCTRL_PIN(23, "PCA08", UNIPHIER_PIN_IECTRL_NONE, 95 - -1, UNIPHIER_PIN_DRV_FIXED_8, 93 + -1, UNIPHIER_PIN_DRV_FIXED8, 96 94 23, UNIPHIER_PIN_PULL_DOWN), 97 95 UNIPHIER_PINCTRL_PIN(24, "PCA09", UNIPHIER_PIN_IECTRL_NONE, 98 - -1, UNIPHIER_PIN_DRV_FIXED_8, 96 + -1, UNIPHIER_PIN_DRV_FIXED8, 99 97 24, UNIPHIER_PIN_PULL_DOWN), 100 98 UNIPHIER_PINCTRL_PIN(25, "PCA10", UNIPHIER_PIN_IECTRL_NONE, 101 - -1, UNIPHIER_PIN_DRV_FIXED_8, 99 + -1, UNIPHIER_PIN_DRV_FIXED8, 102 100 25, UNIPHIER_PIN_PULL_DOWN), 103 101 UNIPHIER_PINCTRL_PIN(26, "PCA11", UNIPHIER_PIN_IECTRL_NONE, 104 - -1, UNIPHIER_PIN_DRV_FIXED_8, 102 + -1, UNIPHIER_PIN_DRV_FIXED8, 105 103 26, UNIPHIER_PIN_PULL_DOWN), 106 104 UNIPHIER_PINCTRL_PIN(27, "PCA12", UNIPHIER_PIN_IECTRL_NONE, 107 - -1, UNIPHIER_PIN_DRV_FIXED_8, 105 + -1, UNIPHIER_PIN_DRV_FIXED8, 108 106 27, UNIPHIER_PIN_PULL_DOWN), 109 107 UNIPHIER_PINCTRL_PIN(28, "PCA13", UNIPHIER_PIN_IECTRL_NONE, 110 - -1, UNIPHIER_PIN_DRV_FIXED_8, 108 + -1, UNIPHIER_PIN_DRV_FIXED8, 111 109 28, UNIPHIER_PIN_PULL_DOWN), 112 110 UNIPHIER_PINCTRL_PIN(29, "PCA14", UNIPHIER_PIN_IECTRL_NONE, 113 - -1, UNIPHIER_PIN_DRV_FIXED_8, 111 + -1, UNIPHIER_PIN_DRV_FIXED8, 114 112 29, UNIPHIER_PIN_PULL_DOWN), 115 113 UNIPHIER_PINCTRL_PIN(30, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 116 - 30, UNIPHIER_PIN_DRV_4_8, 114 + 30, UNIPHIER_PIN_DRV_1BIT, 117 115 30, UNIPHIER_PIN_PULL_UP), 118 116 UNIPHIER_PINCTRL_PIN(31, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 119 - 31, UNIPHIER_PIN_DRV_4_8, 117 + 31, UNIPHIER_PIN_DRV_1BIT, 120 118 31, UNIPHIER_PIN_PULL_UP), 121 119 UNIPHIER_PINCTRL_PIN(32, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 122 - 32, UNIPHIER_PIN_DRV_4_8, 120 + 32, UNIPHIER_PIN_DRV_1BIT, 123 121 32, UNIPHIER_PIN_PULL_DOWN), 124 122 UNIPHIER_PINCTRL_PIN(33, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 125 - 33, UNIPHIER_PIN_DRV_4_8, 123 + 33, UNIPHIER_PIN_DRV_1BIT, 126 124 33, UNIPHIER_PIN_PULL_DOWN), 127 125 UNIPHIER_PINCTRL_PIN(34, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 128 - 34, UNIPHIER_PIN_DRV_4_8, 126 + 34, UNIPHIER_PIN_DRV_1BIT, 129 127 34, UNIPHIER_PIN_PULL_DOWN), 130 128 UNIPHIER_PINCTRL_PIN(35, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 131 - 35, UNIPHIER_PIN_DRV_4_8, 129 + 35, UNIPHIER_PIN_DRV_1BIT, 132 130 35, UNIPHIER_PIN_PULL_UP), 133 131 UNIPHIER_PINCTRL_PIN(36, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE, 134 - 36, UNIPHIER_PIN_DRV_4_8, 132 + 36, UNIPHIER_PIN_DRV_1BIT, 135 133 36, UNIPHIER_PIN_PULL_UP), 136 134 UNIPHIER_PINCTRL_PIN(37, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE, 137 - 37, UNIPHIER_PIN_DRV_4_8, 135 + 37, UNIPHIER_PIN_DRV_1BIT, 138 136 37, UNIPHIER_PIN_PULL_UP), 139 137 UNIPHIER_PINCTRL_PIN(38, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE, 140 - 38, UNIPHIER_PIN_DRV_4_8, 138 + 38, UNIPHIER_PIN_DRV_1BIT, 141 139 38, UNIPHIER_PIN_PULL_UP), 142 140 UNIPHIER_PINCTRL_PIN(39, "NFD0", UNIPHIER_PIN_IECTRL_NONE, 143 - 39, UNIPHIER_PIN_DRV_4_8, 141 + 39, UNIPHIER_PIN_DRV_1BIT, 144 142 39, UNIPHIER_PIN_PULL_DOWN), 145 143 UNIPHIER_PINCTRL_PIN(40, "NFD1", UNIPHIER_PIN_IECTRL_NONE, 146 - 40, UNIPHIER_PIN_DRV_4_8, 144 + 40, UNIPHIER_PIN_DRV_1BIT, 147 145 40, UNIPHIER_PIN_PULL_DOWN), 148 146 UNIPHIER_PINCTRL_PIN(41, "NFD2", UNIPHIER_PIN_IECTRL_NONE, 149 - 41, UNIPHIER_PIN_DRV_4_8, 147 + 41, UNIPHIER_PIN_DRV_1BIT, 150 148 41, UNIPHIER_PIN_PULL_DOWN), 151 149 UNIPHIER_PINCTRL_PIN(42, "NFD3", UNIPHIER_PIN_IECTRL_NONE, 152 - 42, UNIPHIER_PIN_DRV_4_8, 150 + 42, UNIPHIER_PIN_DRV_1BIT, 153 151 42, UNIPHIER_PIN_PULL_DOWN), 154 152 UNIPHIER_PINCTRL_PIN(43, "NFD4", UNIPHIER_PIN_IECTRL_NONE, 155 - 43, UNIPHIER_PIN_DRV_4_8, 153 + 43, UNIPHIER_PIN_DRV_1BIT, 156 154 43, UNIPHIER_PIN_PULL_DOWN), 157 155 UNIPHIER_PINCTRL_PIN(44, "NFD5", UNIPHIER_PIN_IECTRL_NONE, 158 - 44, UNIPHIER_PIN_DRV_4_8, 156 + 44, UNIPHIER_PIN_DRV_1BIT, 159 157 44, UNIPHIER_PIN_PULL_DOWN), 160 158 UNIPHIER_PINCTRL_PIN(45, "NFD6", UNIPHIER_PIN_IECTRL_NONE, 161 - 45, UNIPHIER_PIN_DRV_4_8, 159 + 45, UNIPHIER_PIN_DRV_1BIT, 162 160 45, UNIPHIER_PIN_PULL_DOWN), 163 161 UNIPHIER_PINCTRL_PIN(46, "NFD7", UNIPHIER_PIN_IECTRL_NONE, 164 - 46, UNIPHIER_PIN_DRV_4_8, 162 + 46, UNIPHIER_PIN_DRV_1BIT, 165 163 46, UNIPHIER_PIN_PULL_DOWN), 166 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 166 -1, UNIPHIER_PIN_PULL_UP_FIXED), 169 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 169 -1, UNIPHIER_PIN_PULL_UP_FIXED), 172 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 172 -1, UNIPHIER_PIN_PULL_UP_FIXED), 175 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 175 -1, UNIPHIER_PIN_PULL_UP_FIXED), 178 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 178 -1, UNIPHIER_PIN_PULL_UP_FIXED), 181 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 181 -1, UNIPHIER_PIN_PULL_UP_FIXED), 184 182 UNIPHIER_PINCTRL_PIN(53, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 185 - -1, UNIPHIER_PIN_DRV_FIXED_8, 183 + -1, UNIPHIER_PIN_DRV_FIXED8, 186 184 53, UNIPHIER_PIN_PULL_DOWN), 187 185 UNIPHIER_PINCTRL_PIN(54, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 188 - -1, UNIPHIER_PIN_DRV_FIXED_8, 186 + -1, UNIPHIER_PIN_DRV_FIXED8, 189 187 54, UNIPHIER_PIN_PULL_DOWN), 190 188 UNIPHIER_PINCTRL_PIN(55, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 191 - -1, UNIPHIER_PIN_DRV_FIXED_8, 189 + -1, UNIPHIER_PIN_DRV_FIXED8, 192 190 55, UNIPHIER_PIN_PULL_DOWN), 193 191 UNIPHIER_PINCTRL_PIN(56, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 194 - -1, UNIPHIER_PIN_DRV_FIXED_8, 192 + -1, UNIPHIER_PIN_DRV_FIXED8, 195 193 56, UNIPHIER_PIN_PULL_DOWN), 196 194 UNIPHIER_PINCTRL_PIN(57, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 197 - -1, UNIPHIER_PIN_DRV_FIXED_8, 195 + -1, UNIPHIER_PIN_DRV_FIXED8, 198 196 57, UNIPHIER_PIN_PULL_DOWN), 199 197 UNIPHIER_PINCTRL_PIN(58, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 200 - -1, UNIPHIER_PIN_DRV_FIXED_8, 198 + -1, UNIPHIER_PIN_DRV_FIXED8, 201 199 58, UNIPHIER_PIN_PULL_DOWN), 202 200 UNIPHIER_PINCTRL_PIN(59, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 203 - -1, UNIPHIER_PIN_DRV_FIXED_8, 201 + -1, UNIPHIER_PIN_DRV_FIXED8, 204 202 59, UNIPHIER_PIN_PULL_DOWN), 205 203 UNIPHIER_PINCTRL_PIN(60, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 206 - -1, UNIPHIER_PIN_DRV_FIXED_8, 204 + -1, UNIPHIER_PIN_DRV_FIXED8, 207 205 60, UNIPHIER_PIN_PULL_DOWN), 208 206 UNIPHIER_PINCTRL_PIN(61, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 209 - -1, UNIPHIER_PIN_DRV_FIXED_8, 207 + -1, UNIPHIER_PIN_DRV_FIXED8, 210 208 61, UNIPHIER_PIN_PULL_DOWN), 211 209 UNIPHIER_PINCTRL_PIN(62, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE, 212 - -1, UNIPHIER_PIN_DRV_FIXED_8, 210 + -1, UNIPHIER_PIN_DRV_FIXED8, 213 211 62, UNIPHIER_PIN_PULL_DOWN), 214 212 UNIPHIER_PINCTRL_PIN(63, "USB3OD", UNIPHIER_PIN_IECTRL_NONE, 215 - -1, UNIPHIER_PIN_DRV_FIXED_8, 213 + -1, UNIPHIER_PIN_DRV_FIXED8, 216 214 63, UNIPHIER_PIN_PULL_DOWN), 217 215 UNIPHIER_PINCTRL_PIN(64, "HS0BCLKOUT", UNIPHIER_PIN_IECTRL_NONE, 218 - -1, UNIPHIER_PIN_DRV_FIXED_8, 216 + -1, UNIPHIER_PIN_DRV_FIXED8, 219 217 64, UNIPHIER_PIN_PULL_DOWN), 220 218 UNIPHIER_PINCTRL_PIN(65, "HS0SYNCOUT", UNIPHIER_PIN_IECTRL_NONE, 221 - -1, UNIPHIER_PIN_DRV_FIXED_8, 219 + -1, UNIPHIER_PIN_DRV_FIXED8, 222 220 65, UNIPHIER_PIN_PULL_DOWN), 223 221 UNIPHIER_PINCTRL_PIN(66, "HS0VALOUT", UNIPHIER_PIN_IECTRL_NONE, 224 - -1, UNIPHIER_PIN_DRV_FIXED_8, 222 + -1, UNIPHIER_PIN_DRV_FIXED8, 225 223 66, UNIPHIER_PIN_PULL_DOWN), 226 224 UNIPHIER_PINCTRL_PIN(67, "HS0DOUT0", UNIPHIER_PIN_IECTRL_NONE, 227 - -1, UNIPHIER_PIN_DRV_FIXED_8, 225 + -1, UNIPHIER_PIN_DRV_FIXED8, 228 226 67, UNIPHIER_PIN_PULL_DOWN), 229 227 UNIPHIER_PINCTRL_PIN(68, "HS0DOUT1", UNIPHIER_PIN_IECTRL_NONE, 230 - -1, UNIPHIER_PIN_DRV_FIXED_8, 228 + -1, UNIPHIER_PIN_DRV_FIXED8, 231 229 68, UNIPHIER_PIN_PULL_DOWN), 232 230 UNIPHIER_PINCTRL_PIN(69, "HS0DOUT2", UNIPHIER_PIN_IECTRL_NONE, 233 - -1, UNIPHIER_PIN_DRV_FIXED_8, 231 + -1, UNIPHIER_PIN_DRV_FIXED8, 234 232 69, UNIPHIER_PIN_PULL_DOWN), 235 233 UNIPHIER_PINCTRL_PIN(70, "HS0DOUT3", UNIPHIER_PIN_IECTRL_NONE, 236 - -1, UNIPHIER_PIN_DRV_FIXED_8, 234 + -1, UNIPHIER_PIN_DRV_FIXED8, 237 235 70, UNIPHIER_PIN_PULL_DOWN), 238 236 UNIPHIER_PINCTRL_PIN(71, "HS0DOUT4", UNIPHIER_PIN_IECTRL_NONE, 239 - -1, UNIPHIER_PIN_DRV_FIXED_8, 237 + -1, UNIPHIER_PIN_DRV_FIXED8, 240 238 71, UNIPHIER_PIN_PULL_DOWN), 241 239 UNIPHIER_PINCTRL_PIN(72, "HS0DOUT5", UNIPHIER_PIN_IECTRL_NONE, 242 - -1, UNIPHIER_PIN_DRV_FIXED_8, 240 + -1, UNIPHIER_PIN_DRV_FIXED8, 243 241 72, UNIPHIER_PIN_PULL_DOWN), 244 242 UNIPHIER_PINCTRL_PIN(73, "HS0DOUT6", UNIPHIER_PIN_IECTRL_NONE, 245 - -1, UNIPHIER_PIN_DRV_FIXED_8, 243 + -1, UNIPHIER_PIN_DRV_FIXED8, 246 244 73, UNIPHIER_PIN_PULL_DOWN), 247 245 UNIPHIER_PINCTRL_PIN(74, "HS0DOUT7", UNIPHIER_PIN_IECTRL_NONE, 248 - -1, UNIPHIER_PIN_DRV_FIXED_8, 246 + -1, UNIPHIER_PIN_DRV_FIXED8, 249 247 74, UNIPHIER_PIN_PULL_DOWN), 250 248 UNIPHIER_PINCTRL_PIN(75, "HS1BCLKIN", UNIPHIER_PIN_IECTRL_NONE, 251 - -1, UNIPHIER_PIN_DRV_FIXED_8, 249 + -1, UNIPHIER_PIN_DRV_FIXED8, 252 250 75, UNIPHIER_PIN_PULL_DOWN), 253 251 UNIPHIER_PINCTRL_PIN(76, "HS1SYNCIN", UNIPHIER_PIN_IECTRL_NONE, 254 - -1, UNIPHIER_PIN_DRV_FIXED_8, 252 + -1, UNIPHIER_PIN_DRV_FIXED8, 255 253 76, UNIPHIER_PIN_PULL_DOWN), 256 254 UNIPHIER_PINCTRL_PIN(77, "HS1VALIN", UNIPHIER_PIN_IECTRL_NONE, 257 - -1, UNIPHIER_PIN_DRV_FIXED_8, 255 + -1, UNIPHIER_PIN_DRV_FIXED8, 258 256 77, UNIPHIER_PIN_PULL_DOWN), 259 257 UNIPHIER_PINCTRL_PIN(78, "HS1DIN0", UNIPHIER_PIN_IECTRL_NONE, 260 - -1, UNIPHIER_PIN_DRV_FIXED_8, 258 + -1, UNIPHIER_PIN_DRV_FIXED8, 261 259 78, UNIPHIER_PIN_PULL_DOWN), 262 260 UNIPHIER_PINCTRL_PIN(79, "HS1DIN1", UNIPHIER_PIN_IECTRL_NONE, 263 - -1, UNIPHIER_PIN_DRV_FIXED_8, 261 + -1, UNIPHIER_PIN_DRV_FIXED8, 264 262 79, UNIPHIER_PIN_PULL_DOWN), 265 263 UNIPHIER_PINCTRL_PIN(80, "HS1DIN2", UNIPHIER_PIN_IECTRL_NONE, 266 - -1, UNIPHIER_PIN_DRV_FIXED_8, 264 + -1, UNIPHIER_PIN_DRV_FIXED8, 267 265 80, UNIPHIER_PIN_PULL_DOWN), 268 266 UNIPHIER_PINCTRL_PIN(81, "HS1DIN3", UNIPHIER_PIN_IECTRL_NONE, 269 - -1, UNIPHIER_PIN_DRV_FIXED_8, 267 + -1, UNIPHIER_PIN_DRV_FIXED8, 270 268 81, UNIPHIER_PIN_PULL_DOWN), 271 269 UNIPHIER_PINCTRL_PIN(82, "HS1DIN4", UNIPHIER_PIN_IECTRL_NONE, 272 - -1, UNIPHIER_PIN_DRV_FIXED_8, 270 + -1, UNIPHIER_PIN_DRV_FIXED8, 273 271 82, UNIPHIER_PIN_PULL_DOWN), 274 272 UNIPHIER_PINCTRL_PIN(83, "HS1DIN5", UNIPHIER_PIN_IECTRL_NONE, 275 - -1, UNIPHIER_PIN_DRV_FIXED_8, 273 + -1, UNIPHIER_PIN_DRV_FIXED8, 276 274 83, UNIPHIER_PIN_PULL_DOWN), 277 275 UNIPHIER_PINCTRL_PIN(84, "HS1DIN6", UNIPHIER_PIN_IECTRL_NONE, 278 - -1, UNIPHIER_PIN_DRV_FIXED_8, 276 + -1, UNIPHIER_PIN_DRV_FIXED8, 279 277 84, UNIPHIER_PIN_PULL_DOWN), 280 278 UNIPHIER_PINCTRL_PIN(85, "HS1DIN7", UNIPHIER_PIN_IECTRL_NONE, 281 - -1, UNIPHIER_PIN_DRV_FIXED_8, 279 + -1, UNIPHIER_PIN_DRV_FIXED8, 282 280 85, UNIPHIER_PIN_PULL_DOWN), 283 281 UNIPHIER_PINCTRL_PIN(86, "HS2BCLKIN", UNIPHIER_PIN_IECTRL_NONE, 284 - -1, UNIPHIER_PIN_DRV_FIXED_8, 282 + -1, UNIPHIER_PIN_DRV_FIXED8, 285 283 86, UNIPHIER_PIN_PULL_DOWN), 286 284 UNIPHIER_PINCTRL_PIN(87, "HS2SYNCIN", UNIPHIER_PIN_IECTRL_NONE, 287 - -1, UNIPHIER_PIN_DRV_FIXED_8, 285 + -1, UNIPHIER_PIN_DRV_FIXED8, 288 286 87, UNIPHIER_PIN_PULL_DOWN), 289 287 UNIPHIER_PINCTRL_PIN(88, "HS2VALIN", UNIPHIER_PIN_IECTRL_NONE, 290 - -1, UNIPHIER_PIN_DRV_FIXED_8, 288 + -1, UNIPHIER_PIN_DRV_FIXED8, 291 289 88, UNIPHIER_PIN_PULL_DOWN), 292 290 UNIPHIER_PINCTRL_PIN(89, "HS2DIN0", UNIPHIER_PIN_IECTRL_NONE, 293 - -1, UNIPHIER_PIN_DRV_FIXED_8, 291 + -1, UNIPHIER_PIN_DRV_FIXED8, 294 292 89, UNIPHIER_PIN_PULL_DOWN), 295 293 UNIPHIER_PINCTRL_PIN(90, "HS2DIN1", UNIPHIER_PIN_IECTRL_NONE, 296 - -1, UNIPHIER_PIN_DRV_FIXED_8, 294 + -1, UNIPHIER_PIN_DRV_FIXED8, 297 295 90, UNIPHIER_PIN_PULL_DOWN), 298 296 UNIPHIER_PINCTRL_PIN(91, "HS2DIN2", UNIPHIER_PIN_IECTRL_NONE, 299 - -1, UNIPHIER_PIN_DRV_FIXED_8, 297 + -1, UNIPHIER_PIN_DRV_FIXED8, 300 298 91, UNIPHIER_PIN_PULL_DOWN), 301 299 UNIPHIER_PINCTRL_PIN(92, "HS2DIN3", UNIPHIER_PIN_IECTRL_NONE, 302 - -1, UNIPHIER_PIN_DRV_FIXED_8, 300 + -1, UNIPHIER_PIN_DRV_FIXED8, 303 301 92, UNIPHIER_PIN_PULL_DOWN), 304 302 UNIPHIER_PINCTRL_PIN(93, "HS2DIN4", UNIPHIER_PIN_IECTRL_NONE, 305 - -1, UNIPHIER_PIN_DRV_FIXED_8, 303 + -1, UNIPHIER_PIN_DRV_FIXED8, 306 304 93, UNIPHIER_PIN_PULL_DOWN), 307 305 UNIPHIER_PINCTRL_PIN(94, "HS2DIN5", UNIPHIER_PIN_IECTRL_NONE, 308 - -1, UNIPHIER_PIN_DRV_FIXED_8, 306 + -1, UNIPHIER_PIN_DRV_FIXED8, 309 307 94, UNIPHIER_PIN_PULL_DOWN), 310 308 UNIPHIER_PINCTRL_PIN(95, "HS2DIN6", UNIPHIER_PIN_IECTRL_NONE, 311 - -1, UNIPHIER_PIN_DRV_FIXED_8, 309 + -1, UNIPHIER_PIN_DRV_FIXED8, 312 310 95, UNIPHIER_PIN_PULL_DOWN), 313 311 UNIPHIER_PINCTRL_PIN(96, "HS2DIN7", UNIPHIER_PIN_IECTRL_NONE, 314 - -1, UNIPHIER_PIN_DRV_FIXED_8, 312 + -1, UNIPHIER_PIN_DRV_FIXED8, 315 313 96, UNIPHIER_PIN_PULL_DOWN), 316 314 UNIPHIER_PINCTRL_PIN(97, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE, 317 - -1, UNIPHIER_PIN_DRV_FIXED_8, 315 + -1, UNIPHIER_PIN_DRV_FIXED8, 318 316 97, UNIPHIER_PIN_PULL_DOWN), 319 317 UNIPHIER_PINCTRL_PIN(98, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE, 320 - -1, UNIPHIER_PIN_DRV_FIXED_8, 318 + -1, UNIPHIER_PIN_DRV_FIXED8, 321 319 98, UNIPHIER_PIN_PULL_DOWN), 322 320 UNIPHIER_PINCTRL_PIN(99, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE, 323 - -1, UNIPHIER_PIN_DRV_FIXED_8, 321 + -1, UNIPHIER_PIN_DRV_FIXED8, 324 322 99, UNIPHIER_PIN_PULL_DOWN), 325 323 UNIPHIER_PINCTRL_PIN(100, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE, 326 - -1, UNIPHIER_PIN_DRV_FIXED_8, 324 + -1, UNIPHIER_PIN_DRV_FIXED8, 327 325 100, UNIPHIER_PIN_PULL_DOWN), 328 326 UNIPHIER_PINCTRL_PIN(101, "AO1D0", UNIPHIER_PIN_IECTRL_NONE, 329 - -1, UNIPHIER_PIN_DRV_FIXED_8, 327 + -1, UNIPHIER_PIN_DRV_FIXED8, 330 328 101, UNIPHIER_PIN_PULL_DOWN), 331 329 UNIPHIER_PINCTRL_PIN(102, "AO1D1", UNIPHIER_PIN_IECTRL_NONE, 332 - -1, UNIPHIER_PIN_DRV_FIXED_8, 330 + -1, UNIPHIER_PIN_DRV_FIXED8, 333 331 102, UNIPHIER_PIN_PULL_DOWN), 334 332 UNIPHIER_PINCTRL_PIN(103, "AO1D2", UNIPHIER_PIN_IECTRL_NONE, 335 - -1, UNIPHIER_PIN_DRV_FIXED_8, 333 + -1, UNIPHIER_PIN_DRV_FIXED8, 336 334 103, UNIPHIER_PIN_PULL_DOWN), 337 335 UNIPHIER_PINCTRL_PIN(104, "AO1D3", UNIPHIER_PIN_IECTRL_NONE, 338 - -1, UNIPHIER_PIN_DRV_FIXED_8, 336 + -1, UNIPHIER_PIN_DRV_FIXED8, 339 337 104, UNIPHIER_PIN_PULL_DOWN), 340 338 UNIPHIER_PINCTRL_PIN(105, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 341 - -1, UNIPHIER_PIN_DRV_FIXED_8, 339 + -1, UNIPHIER_PIN_DRV_FIXED8, 342 340 105, UNIPHIER_PIN_PULL_DOWN), 343 341 UNIPHIER_PINCTRL_PIN(106, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 344 - -1, UNIPHIER_PIN_DRV_FIXED_8, 342 + -1, UNIPHIER_PIN_DRV_FIXED8, 345 343 106, UNIPHIER_PIN_PULL_DOWN), 346 344 UNIPHIER_PINCTRL_PIN(107, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 347 - -1, UNIPHIER_PIN_DRV_FIXED_8, 345 + -1, UNIPHIER_PIN_DRV_FIXED8, 348 346 107, UNIPHIER_PIN_PULL_DOWN), 349 347 UNIPHIER_PINCTRL_PIN(108, "AO2D0", UNIPHIER_PIN_IECTRL_NONE, 350 - -1, UNIPHIER_PIN_DRV_FIXED_8, 348 + -1, UNIPHIER_PIN_DRV_FIXED8, 351 349 108, UNIPHIER_PIN_PULL_DOWN), 352 350 UNIPHIER_PINCTRL_PIN(109, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 353 - -1, UNIPHIER_PIN_DRV_FIXED_8, 351 + -1, UNIPHIER_PIN_DRV_FIXED8, 354 352 109, UNIPHIER_PIN_PULL_DOWN), 355 353 UNIPHIER_PINCTRL_PIN(110, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 356 - -1, UNIPHIER_PIN_DRV_FIXED_8, 354 + -1, UNIPHIER_PIN_DRV_FIXED8, 357 355 110, UNIPHIER_PIN_PULL_DOWN), 358 356 UNIPHIER_PINCTRL_PIN(111, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 359 - -1, UNIPHIER_PIN_DRV_FIXED_8, 357 + -1, UNIPHIER_PIN_DRV_FIXED8, 360 358 111, UNIPHIER_PIN_PULL_DOWN), 361 359 UNIPHIER_PINCTRL_PIN(112, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 362 - -1, UNIPHIER_PIN_DRV_FIXED_8, 360 + -1, UNIPHIER_PIN_DRV_FIXED8, 363 361 112, UNIPHIER_PIN_PULL_DOWN), 364 362 UNIPHIER_PINCTRL_PIN(113, "SBO0", 0, 365 - 113, UNIPHIER_PIN_DRV_4_8, 363 + 113, UNIPHIER_PIN_DRV_1BIT, 366 364 113, UNIPHIER_PIN_PULL_UP), 367 365 UNIPHIER_PINCTRL_PIN(114, "SBI0", 0, 368 - 114, UNIPHIER_PIN_DRV_4_8, 366 + 114, UNIPHIER_PIN_DRV_1BIT, 369 367 114, UNIPHIER_PIN_PULL_UP), 370 368 UNIPHIER_PINCTRL_PIN(115, "TXD1", 0, 371 - 115, UNIPHIER_PIN_DRV_4_8, 369 + 115, UNIPHIER_PIN_DRV_1BIT, 372 370 115, UNIPHIER_PIN_PULL_UP), 373 371 UNIPHIER_PINCTRL_PIN(116, "RXD1", 0, 374 - 116, UNIPHIER_PIN_DRV_4_8, 372 + 116, UNIPHIER_PIN_DRV_1BIT, 375 373 116, UNIPHIER_PIN_PULL_UP), 376 374 UNIPHIER_PINCTRL_PIN(117, "PWSRA", UNIPHIER_PIN_IECTRL_NONE, 377 - -1, UNIPHIER_PIN_DRV_FIXED_8, 375 + -1, UNIPHIER_PIN_DRV_FIXED8, 378 376 117, UNIPHIER_PIN_PULL_DOWN), 379 377 UNIPHIER_PINCTRL_PIN(118, "XIRQ0", UNIPHIER_PIN_IECTRL_NONE, 380 - -1, UNIPHIER_PIN_DRV_FIXED_8, 378 + -1, UNIPHIER_PIN_DRV_FIXED8, 381 379 118, UNIPHIER_PIN_PULL_DOWN), 382 380 UNIPHIER_PINCTRL_PIN(119, "XIRQ1", UNIPHIER_PIN_IECTRL_NONE, 383 - -1, UNIPHIER_PIN_DRV_FIXED_8, 381 + -1, UNIPHIER_PIN_DRV_FIXED8, 384 382 119, UNIPHIER_PIN_PULL_DOWN), 385 383 UNIPHIER_PINCTRL_PIN(120, "XIRQ2", UNIPHIER_PIN_IECTRL_NONE, 386 - -1, UNIPHIER_PIN_DRV_FIXED_8, 384 + -1, UNIPHIER_PIN_DRV_FIXED8, 387 385 120, UNIPHIER_PIN_PULL_DOWN), 388 386 UNIPHIER_PINCTRL_PIN(121, "XIRQ3", UNIPHIER_PIN_IECTRL_NONE, 389 - -1, UNIPHIER_PIN_DRV_FIXED_8, 387 + -1, UNIPHIER_PIN_DRV_FIXED8, 390 388 121, UNIPHIER_PIN_PULL_DOWN), 391 389 UNIPHIER_PINCTRL_PIN(122, "XIRQ4", UNIPHIER_PIN_IECTRL_NONE, 392 - -1, UNIPHIER_PIN_DRV_FIXED_8, 390 + -1, UNIPHIER_PIN_DRV_FIXED8, 393 391 122, UNIPHIER_PIN_PULL_DOWN), 394 392 UNIPHIER_PINCTRL_PIN(123, "XIRQ5", UNIPHIER_PIN_IECTRL_NONE, 395 - -1, UNIPHIER_PIN_DRV_FIXED_8, 393 + -1, UNIPHIER_PIN_DRV_FIXED8, 396 394 123, UNIPHIER_PIN_PULL_DOWN), 397 395 UNIPHIER_PINCTRL_PIN(124, "XIRQ6", UNIPHIER_PIN_IECTRL_NONE, 398 - -1, UNIPHIER_PIN_DRV_FIXED_8, 396 + -1, UNIPHIER_PIN_DRV_FIXED8, 399 397 124, UNIPHIER_PIN_PULL_DOWN), 400 398 UNIPHIER_PINCTRL_PIN(125, "XIRQ7", UNIPHIER_PIN_IECTRL_NONE, 401 - -1, UNIPHIER_PIN_DRV_FIXED_8, 399 + -1, UNIPHIER_PIN_DRV_FIXED8, 402 400 125, UNIPHIER_PIN_PULL_DOWN), 403 401 UNIPHIER_PINCTRL_PIN(126, "XIRQ8", UNIPHIER_PIN_IECTRL_NONE, 404 - -1, UNIPHIER_PIN_DRV_FIXED_8, 402 + -1, UNIPHIER_PIN_DRV_FIXED8, 405 403 126, UNIPHIER_PIN_PULL_DOWN), 406 404 UNIPHIER_PINCTRL_PIN(127, "PORT00", UNIPHIER_PIN_IECTRL_NONE, 407 - -1, UNIPHIER_PIN_DRV_FIXED_8, 405 + -1, UNIPHIER_PIN_DRV_FIXED8, 408 406 127, UNIPHIER_PIN_PULL_DOWN), 409 407 UNIPHIER_PINCTRL_PIN(128, "PORT01", UNIPHIER_PIN_IECTRL_NONE, 410 - -1, UNIPHIER_PIN_DRV_FIXED_8, 408 + -1, UNIPHIER_PIN_DRV_FIXED8, 411 409 128, UNIPHIER_PIN_PULL_DOWN), 412 410 UNIPHIER_PINCTRL_PIN(129, "PORT02", UNIPHIER_PIN_IECTRL_NONE, 413 - -1, UNIPHIER_PIN_DRV_FIXED_8, 411 + -1, UNIPHIER_PIN_DRV_FIXED8, 414 412 129, UNIPHIER_PIN_PULL_DOWN), 415 413 UNIPHIER_PINCTRL_PIN(130, "PORT03", UNIPHIER_PIN_IECTRL_NONE, 416 - -1, UNIPHIER_PIN_DRV_FIXED_8, 414 + -1, UNIPHIER_PIN_DRV_FIXED8, 417 415 130, UNIPHIER_PIN_PULL_DOWN), 418 416 UNIPHIER_PINCTRL_PIN(131, "PORT04", UNIPHIER_PIN_IECTRL_NONE, 419 - -1, UNIPHIER_PIN_DRV_FIXED_8, 417 + -1, UNIPHIER_PIN_DRV_FIXED8, 420 418 131, UNIPHIER_PIN_PULL_DOWN), 421 419 UNIPHIER_PINCTRL_PIN(132, "PORT05", UNIPHIER_PIN_IECTRL_NONE, 422 - -1, UNIPHIER_PIN_DRV_FIXED_8, 420 + -1, UNIPHIER_PIN_DRV_FIXED8, 423 421 132, UNIPHIER_PIN_PULL_DOWN), 424 422 UNIPHIER_PINCTRL_PIN(133, "PORT06", UNIPHIER_PIN_IECTRL_NONE, 425 - -1, UNIPHIER_PIN_DRV_FIXED_8, 423 + -1, UNIPHIER_PIN_DRV_FIXED8, 426 424 133, UNIPHIER_PIN_PULL_DOWN), 427 425 UNIPHIER_PINCTRL_PIN(134, "PORT07", UNIPHIER_PIN_IECTRL_NONE, 428 - -1, UNIPHIER_PIN_DRV_FIXED_8, 426 + -1, UNIPHIER_PIN_DRV_FIXED8, 429 427 134, UNIPHIER_PIN_PULL_DOWN), 430 428 UNIPHIER_PINCTRL_PIN(135, "PORT10", UNIPHIER_PIN_IECTRL_NONE, 431 - -1, UNIPHIER_PIN_DRV_FIXED_8, 429 + -1, UNIPHIER_PIN_DRV_FIXED8, 432 430 135, UNIPHIER_PIN_PULL_DOWN), 433 431 UNIPHIER_PINCTRL_PIN(136, "PORT11", UNIPHIER_PIN_IECTRL_NONE, 434 - -1, UNIPHIER_PIN_DRV_FIXED_8, 432 + -1, UNIPHIER_PIN_DRV_FIXED8, 435 433 136, UNIPHIER_PIN_PULL_DOWN), 436 434 UNIPHIER_PINCTRL_PIN(137, "PORT12", UNIPHIER_PIN_IECTRL_NONE, 437 - -1, UNIPHIER_PIN_DRV_FIXED_8, 435 + -1, UNIPHIER_PIN_DRV_FIXED8, 438 436 137, UNIPHIER_PIN_PULL_DOWN), 439 437 UNIPHIER_PINCTRL_PIN(138, "PORT13", UNIPHIER_PIN_IECTRL_NONE, 440 - -1, UNIPHIER_PIN_DRV_FIXED_8, 438 + -1, UNIPHIER_PIN_DRV_FIXED8, 441 439 138, UNIPHIER_PIN_PULL_DOWN), 442 440 UNIPHIER_PINCTRL_PIN(139, "PORT14", UNIPHIER_PIN_IECTRL_NONE, 443 - -1, UNIPHIER_PIN_DRV_FIXED_8, 441 + -1, UNIPHIER_PIN_DRV_FIXED8, 444 442 139, UNIPHIER_PIN_PULL_DOWN), 445 443 UNIPHIER_PINCTRL_PIN(140, "PORT15", UNIPHIER_PIN_IECTRL_NONE, 446 - -1, UNIPHIER_PIN_DRV_FIXED_8, 444 + -1, UNIPHIER_PIN_DRV_FIXED8, 447 445 140, UNIPHIER_PIN_PULL_DOWN), 448 446 UNIPHIER_PINCTRL_PIN(141, "PORT16", UNIPHIER_PIN_IECTRL_NONE, 449 - -1, UNIPHIER_PIN_DRV_FIXED_8, 447 + -1, UNIPHIER_PIN_DRV_FIXED8, 450 448 141, UNIPHIER_PIN_PULL_DOWN), 451 449 UNIPHIER_PINCTRL_PIN(142, "LPST", UNIPHIER_PIN_IECTRL_NONE, 452 - 142, UNIPHIER_PIN_DRV_4_8, 450 + 142, UNIPHIER_PIN_DRV_1BIT, 453 451 142, UNIPHIER_PIN_PULL_DOWN), 454 452 UNIPHIER_PINCTRL_PIN(143, "MDC", 0, 455 - 143, UNIPHIER_PIN_DRV_4_8, 453 + 143, UNIPHIER_PIN_DRV_1BIT, 456 454 143, UNIPHIER_PIN_PULL_DOWN), 457 455 UNIPHIER_PINCTRL_PIN(144, "MDIO", 0, 458 - 144, UNIPHIER_PIN_DRV_4_8, 456 + 144, UNIPHIER_PIN_DRV_1BIT, 459 457 144, UNIPHIER_PIN_PULL_DOWN), 460 458 UNIPHIER_PINCTRL_PIN(145, "MDIO_INTL", 0, 461 - 145, UNIPHIER_PIN_DRV_4_8, 459 + 145, UNIPHIER_PIN_DRV_1BIT, 462 460 145, UNIPHIER_PIN_PULL_DOWN), 463 461 UNIPHIER_PINCTRL_PIN(146, "PHYRSTL", 0, 464 - 146, UNIPHIER_PIN_DRV_4_8, 462 + 146, UNIPHIER_PIN_DRV_1BIT, 465 463 146, UNIPHIER_PIN_PULL_DOWN), 466 464 UNIPHIER_PINCTRL_PIN(147, "RGMII_RXCLK", 0, 467 - 147, UNIPHIER_PIN_DRV_4_8, 465 + 147, UNIPHIER_PIN_DRV_1BIT, 468 466 147, UNIPHIER_PIN_PULL_DOWN), 469 467 UNIPHIER_PINCTRL_PIN(148, "RGMII_RXD0", 0, 470 - 148, UNIPHIER_PIN_DRV_4_8, 468 + 148, UNIPHIER_PIN_DRV_1BIT, 471 469 148, UNIPHIER_PIN_PULL_DOWN), 472 470 UNIPHIER_PINCTRL_PIN(149, "RGMII_RXD1", 0, 473 - 149, UNIPHIER_PIN_DRV_4_8, 471 + 149, UNIPHIER_PIN_DRV_1BIT, 474 472 149, UNIPHIER_PIN_PULL_DOWN), 475 473 UNIPHIER_PINCTRL_PIN(150, "RGMII_RXD2", 0, 476 - 150, UNIPHIER_PIN_DRV_4_8, 474 + 150, UNIPHIER_PIN_DRV_1BIT, 477 475 150, UNIPHIER_PIN_PULL_DOWN), 478 476 UNIPHIER_PINCTRL_PIN(151, "RGMII_RXD3", 0, 479 - 151, UNIPHIER_PIN_DRV_4_8, 477 + 151, UNIPHIER_PIN_DRV_1BIT, 480 478 151, UNIPHIER_PIN_PULL_DOWN), 481 479 UNIPHIER_PINCTRL_PIN(152, "RGMII_RXCTL", 0, 482 - 152, UNIPHIER_PIN_DRV_4_8, 480 + 152, UNIPHIER_PIN_DRV_1BIT, 483 481 152, UNIPHIER_PIN_PULL_DOWN), 484 482 UNIPHIER_PINCTRL_PIN(153, "RGMII_TXCLK", 0, 485 - 153, UNIPHIER_PIN_DRV_4_8, 483 + 153, UNIPHIER_PIN_DRV_1BIT, 486 484 153, UNIPHIER_PIN_PULL_DOWN), 487 485 UNIPHIER_PINCTRL_PIN(154, "RGMII_TXD0", 0, 488 - 154, UNIPHIER_PIN_DRV_4_8, 486 + 154, UNIPHIER_PIN_DRV_1BIT, 489 487 154, UNIPHIER_PIN_PULL_DOWN), 490 488 UNIPHIER_PINCTRL_PIN(155, "RGMII_TXD1", 0, 491 - 155, UNIPHIER_PIN_DRV_4_8, 489 + 155, UNIPHIER_PIN_DRV_1BIT, 492 490 155, UNIPHIER_PIN_PULL_DOWN), 493 491 UNIPHIER_PINCTRL_PIN(156, "RGMII_TXD2", 0, 494 - 156, UNIPHIER_PIN_DRV_4_8, 492 + 156, UNIPHIER_PIN_DRV_1BIT, 495 493 156, UNIPHIER_PIN_PULL_DOWN), 496 494 UNIPHIER_PINCTRL_PIN(157, "RGMII_TXD3", 0, 497 - 157, UNIPHIER_PIN_DRV_4_8, 495 + 157, UNIPHIER_PIN_DRV_1BIT, 498 496 157, UNIPHIER_PIN_PULL_DOWN), 499 497 UNIPHIER_PINCTRL_PIN(158, "RGMII_TXCTL", 0, 500 - 158, UNIPHIER_PIN_DRV_4_8, 498 + 158, UNIPHIER_PIN_DRV_1BIT, 501 499 158, UNIPHIER_PIN_PULL_DOWN), 502 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 502 159, UNIPHIER_PIN_PULL_DOWN), 505 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 505 160, UNIPHIER_PIN_PULL_DOWN), 508 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 508 161, UNIPHIER_PIN_PULL_DOWN), 511 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 511 162, UNIPHIER_PIN_PULL_DOWN), 514 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 514 163, UNIPHIER_PIN_PULL_DOWN), 517 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 517 164, UNIPHIER_PIN_PULL_DOWN), 520 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 520 165, UNIPHIER_PIN_PULL_DOWN), 523 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 523 166, UNIPHIER_PIN_PULL_DOWN), 526 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 526 167, UNIPHIER_PIN_PULL_DOWN), 529 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 529 168, UNIPHIER_PIN_PULL_DOWN), 532 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 532 169, UNIPHIER_PIN_PULL_DOWN), 535 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 535 170, UNIPHIER_PIN_PULL_DOWN), 538 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 538 171, UNIPHIER_PIN_PULL_DOWN), 541 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 541 172, UNIPHIER_PIN_PULL_DOWN), 544 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 544 173, UNIPHIER_PIN_PULL_DOWN), 547 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 547 174, UNIPHIER_PIN_PULL_DOWN), 550 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 550 175, UNIPHIER_PIN_PULL_DOWN), 553 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 553 176, UNIPHIER_PIN_PULL_DOWN), 556 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 556 177, UNIPHIER_PIN_PULL_DOWN), 559 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 559 178, UNIPHIER_PIN_PULL_DOWN), 562 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 562 179, UNIPHIER_PIN_PULL_DOWN), 565 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 565 180, UNIPHIER_PIN_PULL_DOWN), 568 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 568 181, UNIPHIER_PIN_PULL_DOWN), 571 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 571 182, UNIPHIER_PIN_PULL_DOWN), 574 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 574 183, UNIPHIER_PIN_PULL_DOWN), 577 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 577 184, UNIPHIER_PIN_PULL_DOWN), 580 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 580 185, UNIPHIER_PIN_PULL_DOWN), 583 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 583 186, UNIPHIER_PIN_PULL_DOWN), 586 584 UNIPHIER_PINCTRL_PIN(187, "A_D_HS0BCLKIN", 0, 587 - 187, UNIPHIER_PIN_DRV_4_8, 585 + 187, UNIPHIER_PIN_DRV_1BIT, 588 586 187, UNIPHIER_PIN_PULL_DOWN), 589 587 UNIPHIER_PINCTRL_PIN(188, "A_D_HS0SYNCIN", 0, 590 - 188, UNIPHIER_PIN_DRV_4_8, 588 + 188, UNIPHIER_PIN_DRV_1BIT, 591 589 188, UNIPHIER_PIN_PULL_DOWN), 592 590 UNIPHIER_PINCTRL_PIN(189, "A_D_HS0VALIN", 0, 593 - 189, UNIPHIER_PIN_DRV_4_8, 591 + 189, UNIPHIER_PIN_DRV_1BIT, 594 592 189, UNIPHIER_PIN_PULL_DOWN), 595 593 UNIPHIER_PINCTRL_PIN(190, "A_D_HS0DIN0", 0, 596 - 190, UNIPHIER_PIN_DRV_4_8, 594 + 190, UNIPHIER_PIN_DRV_1BIT, 597 595 190, UNIPHIER_PIN_PULL_DOWN), 598 596 UNIPHIER_PINCTRL_PIN(191, "A_D_HS0DIN1", 0, 599 - 191, UNIPHIER_PIN_DRV_4_8, 597 + 191, UNIPHIER_PIN_DRV_1BIT, 600 598 191, UNIPHIER_PIN_PULL_DOWN), 601 599 UNIPHIER_PINCTRL_PIN(192, "A_D_HS0DIN2", 0, 602 - 192, UNIPHIER_PIN_DRV_4_8, 600 + 192, UNIPHIER_PIN_DRV_1BIT, 603 601 192, UNIPHIER_PIN_PULL_DOWN), 604 602 UNIPHIER_PINCTRL_PIN(193, "A_D_HS0DIN3", 0, 605 - 193, UNIPHIER_PIN_DRV_4_8, 603 + 193, UNIPHIER_PIN_DRV_1BIT, 606 604 193, UNIPHIER_PIN_PULL_DOWN), 607 605 UNIPHIER_PINCTRL_PIN(194, "A_D_HS0DIN4", 0, 608 - 194, UNIPHIER_PIN_DRV_4_8, 606 + 194, UNIPHIER_PIN_DRV_1BIT, 609 607 194, UNIPHIER_PIN_PULL_DOWN), 610 608 UNIPHIER_PINCTRL_PIN(195, "A_D_HS0DIN5", 0, 611 - 195, UNIPHIER_PIN_DRV_4_8, 609 + 195, UNIPHIER_PIN_DRV_1BIT, 612 610 195, UNIPHIER_PIN_PULL_DOWN), 613 611 UNIPHIER_PINCTRL_PIN(196, "A_D_HS0DIN6", 0, 614 - 196, UNIPHIER_PIN_DRV_4_8, 612 + 196, UNIPHIER_PIN_DRV_1BIT, 615 613 196, UNIPHIER_PIN_PULL_DOWN), 616 614 UNIPHIER_PINCTRL_PIN(197, "A_D_HS0DIN7", 0, 617 - 197, UNIPHIER_PIN_DRV_4_8, 615 + 197, UNIPHIER_PIN_DRV_1BIT, 618 616 197, UNIPHIER_PIN_PULL_DOWN), 619 617 UNIPHIER_PINCTRL_PIN(198, "A_D_AO1ARC", 0, 620 - 198, UNIPHIER_PIN_DRV_4_8, 618 + 198, UNIPHIER_PIN_DRV_1BIT, 621 619 198, UNIPHIER_PIN_PULL_DOWN), 622 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 622 199, UNIPHIER_PIN_PULL_DOWN), 625 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 625 200, UNIPHIER_PIN_PULL_DOWN), 628 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 628 201, UNIPHIER_PIN_PULL_DOWN), 631 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 631 202, UNIPHIER_PIN_PULL_DOWN), 634 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 634 203, UNIPHIER_PIN_PULL_DOWN), 637 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 637 204, UNIPHIER_PIN_PULL_DOWN), 640 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 640 205, UNIPHIER_PIN_PULL_DOWN), 643 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 643 206, UNIPHIER_PIN_PULL_DOWN), 646 644 UNIPHIER_PINCTRL_PIN(207, "A_D_HDMIRXXIRQ", 0, 647 - 207, UNIPHIER_PIN_DRV_4_8, 645 + 207, UNIPHIER_PIN_DRV_1BIT, 648 646 207, UNIPHIER_PIN_PULL_DOWN), 649 647 UNIPHIER_PINCTRL_PIN(208, "A_D_VBIXIRQ", 0, 650 - 208, UNIPHIER_PIN_DRV_4_8, 648 + 208, UNIPHIER_PIN_DRV_1BIT, 651 649 208, UNIPHIER_PIN_PULL_DOWN), 652 650 UNIPHIER_PINCTRL_PIN(209, "A_D_HDMITXXIRQ", 0, 653 - 209, UNIPHIER_PIN_DRV_4_8, 651 + 209, UNIPHIER_PIN_DRV_1BIT, 654 652 209, UNIPHIER_PIN_PULL_DOWN), 655 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 655 210, UNIPHIER_PIN_PULL_DOWN), 658 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 658 211, UNIPHIER_PIN_PULL_DOWN), 661 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 661 212, UNIPHIER_PIN_PULL_DOWN), 664 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 664 213, UNIPHIER_PIN_PULL_DOWN), 667 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 667 214, UNIPHIER_PIN_PULL_DOWN), 670 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 670 215, UNIPHIER_PIN_PULL_DOWN), 673 671 UNIPHIER_PINCTRL_PIN(216, "A_D_VDACCLKOUT", 0, 674 - 216, UNIPHIER_PIN_DRV_4_8, 672 + 216, UNIPHIER_PIN_DRV_1BIT, 675 673 216, UNIPHIER_PIN_PULL_DOWN), 676 674 UNIPHIER_PINCTRL_PIN(217, "A_D_VDACDOUT5", 0, 677 - 217, UNIPHIER_PIN_DRV_4_8, 675 + 217, UNIPHIER_PIN_DRV_1BIT, 678 676 217, UNIPHIER_PIN_PULL_DOWN), 679 677 UNIPHIER_PINCTRL_PIN(218, "A_D_VDACDOUT6", 0, 680 - 218, UNIPHIER_PIN_DRV_4_8, 678 + 218, UNIPHIER_PIN_DRV_1BIT, 681 679 218, UNIPHIER_PIN_PULL_DOWN), 682 680 UNIPHIER_PINCTRL_PIN(219, "A_D_VDACDOUT7", 0, 683 - 219, UNIPHIER_PIN_DRV_4_8, 681 + 219, UNIPHIER_PIN_DRV_1BIT, 684 682 219, UNIPHIER_PIN_PULL_DOWN), 685 683 UNIPHIER_PINCTRL_PIN(220, "A_D_VDACDOUT8", 0, 686 - 220, UNIPHIER_PIN_DRV_4_8, 684 + 220, UNIPHIER_PIN_DRV_1BIT, 687 685 220, UNIPHIER_PIN_PULL_DOWN), 688 686 UNIPHIER_PINCTRL_PIN(221, "A_D_VDACDOUT9", 0, 689 - 221, UNIPHIER_PIN_DRV_4_8, 687 + 221, UNIPHIER_PIN_DRV_1BIT, 690 688 221, UNIPHIER_PIN_PULL_DOWN), 691 689 UNIPHIER_PINCTRL_PIN(222, "A_D_SIFBCKIN", 0, 692 - 222, UNIPHIER_PIN_DRV_4_8, 690 + 222, UNIPHIER_PIN_DRV_1BIT, 693 691 222, UNIPHIER_PIN_PULL_DOWN), 694 692 UNIPHIER_PINCTRL_PIN(223, "A_D_SIFLRCKIN", 0, 695 - 223, UNIPHIER_PIN_DRV_4_8, 693 + 223, UNIPHIER_PIN_DRV_1BIT, 696 694 223, UNIPHIER_PIN_PULL_DOWN), 697 695 UNIPHIER_PINCTRL_PIN(224, "A_D_SIFDIN", 0, 698 - 224, UNIPHIER_PIN_DRV_4_8, 696 + 224, UNIPHIER_PIN_DRV_1BIT, 699 697 224, UNIPHIER_PIN_PULL_DOWN), 700 698 UNIPHIER_PINCTRL_PIN(225, "A_D_LIBCKOUT", 0, 701 - 225, UNIPHIER_PIN_DRV_4_8, 699 + 225, UNIPHIER_PIN_DRV_1BIT, 702 700 225, UNIPHIER_PIN_PULL_DOWN), 703 701 UNIPHIER_PINCTRL_PIN(226, "A_D_LILRCKOUT", 0, 704 - 226, UNIPHIER_PIN_DRV_4_8, 702 + 226, UNIPHIER_PIN_DRV_1BIT, 705 703 226, UNIPHIER_PIN_PULL_DOWN), 706 704 UNIPHIER_PINCTRL_PIN(227, "A_D_LIDIN", 0, 707 - 227, UNIPHIER_PIN_DRV_4_8, 705 + 227, UNIPHIER_PIN_DRV_1BIT, 708 706 227, UNIPHIER_PIN_PULL_DOWN), 709 707 UNIPHIER_PINCTRL_PIN(228, "A_D_LODOUT", 0, 710 - 228, UNIPHIER_PIN_DRV_4_8, 708 + 228, UNIPHIER_PIN_DRV_1BIT, 711 709 228, UNIPHIER_PIN_PULL_DOWN), 712 710 UNIPHIER_PINCTRL_PIN(229, "A_D_HPDOUT", 0, 713 - 229, UNIPHIER_PIN_DRV_4_8, 711 + 229, UNIPHIER_PIN_DRV_1BIT, 714 712 229, UNIPHIER_PIN_PULL_DOWN), 715 713 UNIPHIER_PINCTRL_PIN(230, "A_D_MCLK", 0, 716 - 230, UNIPHIER_PIN_DRV_4_8, 714 + 230, UNIPHIER_PIN_DRV_1BIT, 717 715 230, UNIPHIER_PIN_PULL_DOWN), 718 716 UNIPHIER_PINCTRL_PIN(231, "A_D_A2PLLREFOUT", 0, 719 - 231, UNIPHIER_PIN_DRV_4_8, 717 + 231, UNIPHIER_PIN_DRV_1BIT, 720 718 231, UNIPHIER_PIN_PULL_DOWN), 721 719 UNIPHIER_PINCTRL_PIN(232, "A_D_HDMI3DSDAOUT", 0, 722 - 232, UNIPHIER_PIN_DRV_4_8, 720 + 232, UNIPHIER_PIN_DRV_1BIT, 723 721 232, UNIPHIER_PIN_PULL_DOWN), 724 722 UNIPHIER_PINCTRL_PIN(233, "A_D_HDMI3DSDAIN", 0, 725 - 233, UNIPHIER_PIN_DRV_4_8, 723 + 233, UNIPHIER_PIN_DRV_1BIT, 726 724 233, UNIPHIER_PIN_PULL_DOWN), 727 725 UNIPHIER_PINCTRL_PIN(234, "A_D_HDMI3DSCLIN", 0, 728 - 234, UNIPHIER_PIN_DRV_4_8, 726 + 234, UNIPHIER_PIN_DRV_1BIT, 729 727 234, UNIPHIER_PIN_PULL_DOWN), 730 728 }; 731 729 ··· 735 737 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 736 738 229, 230, 231, 232, 233, 234, 737 739 }; 738 - static const unsigned adinter_muxvals[] = { 740 + static const int adinter_muxvals[] = { 739 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, 740 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, 741 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, 742 744 0, 0, 0, 0, 743 745 }; 744 746 static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; 745 - static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 747 + static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 746 748 static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; 747 - static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 749 + static const int emmc_dat8_muxvals[] = {1, 1, 1, 1}; 750 + static const unsigned ether_rgmii_pins[] = {143, 144, 145, 146, 147, 148, 149, 751 + 150, 151, 152, 153, 154, 155, 156, 752 + 157, 158}; 753 + static const int ether_rgmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754 + 0, 0, 0, 0}; 755 + static const unsigned ether_rmii_pins[] = {143, 144, 145, 146, 147, 148, 149, 756 + 150, 152, 154, 155, 158}; 757 + static const int ether_rmii_muxvals[] = {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}; 748 758 static const unsigned i2c0_pins[] = {109, 110}; 749 - static const unsigned i2c0_muxvals[] = {0, 0}; 759 + static const int i2c0_muxvals[] = {0, 0}; 750 760 static const unsigned i2c1_pins[] = {111, 112}; 751 - static const unsigned i2c1_muxvals[] = {0, 0}; 761 + static const int i2c1_muxvals[] = {0, 0}; 752 762 static const unsigned i2c2_pins[] = {115, 116}; 753 - static const unsigned i2c2_muxvals[] = {1, 1}; 763 + static const int i2c2_muxvals[] = {1, 1}; 754 764 static const unsigned i2c3_pins[] = {118, 119}; 755 - static const unsigned i2c3_muxvals[] = {1, 1}; 765 + static const int i2c3_muxvals[] = {1, 1}; 756 766 static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41, 757 767 42, 43, 44, 45, 46}; 758 - static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 759 - 0, 0}; 768 + static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 760 769 static const unsigned nand_cs1_pins[] = {37, 38}; 761 - static const unsigned nand_cs1_muxvals[] = {0, 0}; 770 + static const int nand_cs1_muxvals[] = {0, 0}; 762 771 static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55}; 763 - static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 772 + static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 773 + static const unsigned system_bus_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 774 + 11, 12, 13}; 775 + static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 776 + 0}; 777 + static const unsigned system_bus_cs1_pins[] = {14}; 778 + static const int system_bus_cs1_muxvals[] = {0}; 779 + static const unsigned system_bus_cs2_pins[] = {37}; 780 + static const int system_bus_cs2_muxvals[] = {6}; 781 + static const unsigned system_bus_cs3_pins[] = {38}; 782 + static const int system_bus_cs3_muxvals[] = {6}; 783 + static const unsigned system_bus_cs4_pins[] = {115}; 784 + static const int system_bus_cs4_muxvals[] = {6}; 785 + static const unsigned system_bus_cs5_pins[] = {55}; 786 + static const int system_bus_cs5_muxvals[] = {6}; 764 787 static const unsigned uart0_pins[] = {135, 136}; 765 - static const unsigned uart0_muxvals[] = {3, 3}; 788 + static const int uart0_muxvals[] = {3, 3}; 766 789 static const unsigned uart0b_pins[] = {11, 12}; 767 - static const unsigned uart0b_muxvals[] = {2, 2}; 790 + static const int uart0b_muxvals[] = {2, 2}; 768 791 static const unsigned uart1_pins[] = {115, 116}; 769 - static const unsigned uart1_muxvals[] = {0, 0}; 792 + static const int uart1_muxvals[] = {0, 0}; 770 793 static const unsigned uart1b_pins[] = {113, 114}; 771 - static const unsigned uart1b_muxvals[] = {1, 1}; 794 + static const int uart1b_muxvals[] = {1, 1}; 772 795 static const unsigned uart2_pins[] = {113, 114}; 773 - static const unsigned uart2_muxvals[] = {2, 2}; 796 + static const int uart2_muxvals[] = {2, 2}; 774 797 static const unsigned uart2b_pins[] = {86, 87}; 775 - static const unsigned uart2b_muxvals[] = {1, 1}; 798 + static const int uart2b_muxvals[] = {1, 1}; 776 799 static const unsigned usb0_pins[] = {56, 57}; 777 - static const unsigned usb0_muxvals[] = {0, 0}; 800 + static const int usb0_muxvals[] = {0, 0}; 778 801 static const unsigned usb1_pins[] = {58, 59}; 779 - static const unsigned usb1_muxvals[] = {0, 0}; 802 + static const int usb1_muxvals[] = {0, 0}; 780 803 static const unsigned usb2_pins[] = {60, 61}; 781 - static const unsigned usb2_muxvals[] = {0, 0}; 804 + static const int usb2_muxvals[] = {0, 0}; 782 805 static const unsigned usb3_pins[] = {62, 63}; 783 - static const unsigned usb3_muxvals[] = {0, 0}; 806 + static const int usb3_muxvals[] = {0, 0}; 784 807 static const unsigned port_range0_pins[] = { 785 808 127, 128, 129, 130, 131, 132, 133, 134, /* PORT0x */ 786 809 135, 136, 137, 138, 139, 140, 141, 142, /* PORT1x */ ··· 815 796 61, 62, 63, 64, 65, 66, 67, 68, /* PORT9x */ 816 797 69, 70, 71, 76, 77, 78, 79, 80, /* PORT10x */ 817 798 }; 818 - static const unsigned port_range0_muxvals[] = { 799 + static const int port_range0_muxvals[] = { 819 800 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 820 801 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 821 802 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ ··· 847 828 218, 219, 220, 221, 223, 224, 225, 226, /* PORT27x */ 848 829 227, 228, 229, 230, 231, 232, 233, 234, /* PORT28x */ 849 830 }; 850 - static const unsigned port_range1_muxvals[] = { 831 + static const int port_range1_muxvals[] = { 851 832 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */ 852 833 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */ 853 834 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */ ··· 871 852 126, 72, 73, 92, 177, 93, 94, 176, /* XIRQ8-15 */ 872 853 74, 91, 27, 28, 29, 75, 20, 26, /* XIRQ16-23 */ 873 854 }; 874 - static const unsigned xirq_muxvals[] = { 855 + static const int xirq_muxvals[] = { 875 856 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */ 876 857 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */ 877 858 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */ 878 859 }; 879 860 880 - static const struct uniphier_pinctrl_group ph1_ld6b_groups[] = { 861 + static const struct uniphier_pinctrl_group uniphier_ld6b_groups[] = { 881 862 UNIPHIER_PINCTRL_GROUP(adinter), 882 863 UNIPHIER_PINCTRL_GROUP(emmc), 883 864 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 865 + UNIPHIER_PINCTRL_GROUP(ether_rgmii), 866 + UNIPHIER_PINCTRL_GROUP(ether_rmii), 884 867 UNIPHIER_PINCTRL_GROUP(i2c0), 885 868 UNIPHIER_PINCTRL_GROUP(i2c1), 886 869 UNIPHIER_PINCTRL_GROUP(i2c2), ··· 890 869 UNIPHIER_PINCTRL_GROUP(nand), 891 870 UNIPHIER_PINCTRL_GROUP(nand_cs1), 892 871 UNIPHIER_PINCTRL_GROUP(sd), 872 + UNIPHIER_PINCTRL_GROUP(system_bus), 873 + UNIPHIER_PINCTRL_GROUP(system_bus_cs1), 874 + UNIPHIER_PINCTRL_GROUP(system_bus_cs2), 875 + UNIPHIER_PINCTRL_GROUP(system_bus_cs3), 876 + UNIPHIER_PINCTRL_GROUP(system_bus_cs4), 877 + UNIPHIER_PINCTRL_GROUP(system_bus_cs5), 893 878 UNIPHIER_PINCTRL_GROUP(uart0), 894 879 UNIPHIER_PINCTRL_GROUP(uart0b), 895 880 UNIPHIER_PINCTRL_GROUP(uart1), ··· 1161 1134 1162 1135 static const char * const adinter_groups[] = {"adinter"}; 1163 1136 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 1137 + static const char * const ether_rgmii_groups[] = {"ether_rgmii"}; 1138 + static const char * const ether_rmii_groups[] = {"ether_rmii"}; 1164 1139 static const char * const i2c0_groups[] = {"i2c0"}; 1165 1140 static const char * const i2c1_groups[] = {"i2c1"}; 1166 1141 static const char * const i2c2_groups[] = {"i2c2"}; 1167 1142 static const char * const i2c3_groups[] = {"i2c3"}; 1168 1143 static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1169 1144 static const char * const sd_groups[] = {"sd"}; 1145 + static const char * const system_bus_groups[] = {"system_bus", 1146 + "system_bus_cs1", 1147 + "system_bus_cs2", 1148 + "system_bus_cs3", 1149 + "system_bus_cs4", 1150 + "system_bus_cs5"}; 1170 1151 static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1171 1152 static const char * const uart1_groups[] = {"uart1", "uart1b"}; 1172 1153 static const char * const uart2_groups[] = {"uart2", "uart2b"}; ··· 1250 1215 "xirq20", "xirq21", "xirq22", "xirq23", 1251 1216 }; 1252 1217 1253 - static const struct uniphier_pinmux_function ph1_ld6b_functions[] = { 1218 + static const struct uniphier_pinmux_function uniphier_ld6b_functions[] = { 1254 1219 UNIPHIER_PINMUX_FUNCTION(adinter), /* Achip-Dchip interconnect */ 1255 1220 UNIPHIER_PINMUX_FUNCTION(emmc), 1221 + UNIPHIER_PINMUX_FUNCTION(ether_rgmii), 1222 + UNIPHIER_PINMUX_FUNCTION(ether_rmii), 1256 1223 UNIPHIER_PINMUX_FUNCTION(i2c0), 1257 1224 UNIPHIER_PINMUX_FUNCTION(i2c1), 1258 1225 UNIPHIER_PINMUX_FUNCTION(i2c2), 1259 1226 UNIPHIER_PINMUX_FUNCTION(i2c3), 1260 1227 UNIPHIER_PINMUX_FUNCTION(nand), 1261 1228 UNIPHIER_PINMUX_FUNCTION(sd), 1229 + UNIPHIER_PINMUX_FUNCTION(system_bus), 1262 1230 UNIPHIER_PINMUX_FUNCTION(uart0), 1263 1231 UNIPHIER_PINMUX_FUNCTION(uart1), 1264 1232 UNIPHIER_PINMUX_FUNCTION(uart2), ··· 1273 1235 UNIPHIER_PINMUX_FUNCTION(xirq), 1274 1236 }; 1275 1237 1276 - static struct uniphier_pinctrl_socdata ph1_ld6b_pindata = { 1277 - .groups = ph1_ld6b_groups, 1278 - .groups_count = ARRAY_SIZE(ph1_ld6b_groups), 1279 - .functions = ph1_ld6b_functions, 1280 - .functions_count = ARRAY_SIZE(ph1_ld6b_functions), 1281 - .mux_bits = 8, 1282 - .reg_stride = 4, 1283 - .load_pinctrl = false, 1238 + static struct uniphier_pinctrl_socdata uniphier_ld6b_pindata = { 1239 + .pins = uniphier_ld6b_pins, 1240 + .npins = ARRAY_SIZE(uniphier_ld6b_pins), 1241 + .groups = uniphier_ld6b_groups, 1242 + .groups_count = ARRAY_SIZE(uniphier_ld6b_groups), 1243 + .functions = uniphier_ld6b_functions, 1244 + .functions_count = ARRAY_SIZE(uniphier_ld6b_functions), 1245 + .caps = 0, 1284 1246 }; 1285 1247 1286 - static struct pinctrl_desc ph1_ld6b_pinctrl_desc = { 1287 - .name = DRIVER_NAME, 1288 - .pins = ph1_ld6b_pins, 1289 - .npins = ARRAY_SIZE(ph1_ld6b_pins), 1290 - .owner = THIS_MODULE, 1291 - }; 1292 - 1293 - static int ph1_ld6b_pinctrl_probe(struct platform_device *pdev) 1248 + static int uniphier_ld6b_pinctrl_probe(struct platform_device *pdev) 1294 1249 { 1295 - return uniphier_pinctrl_probe(pdev, &ph1_ld6b_pinctrl_desc, 1296 - &ph1_ld6b_pindata); 1250 + return uniphier_pinctrl_probe(pdev, &uniphier_ld6b_pindata); 1297 1251 } 1298 1252 1299 - static const struct of_device_id ph1_ld6b_pinctrl_match[] = { 1253 + static const struct of_device_id uniphier_ld6b_pinctrl_match[] = { 1254 + { .compatible = "socionext,uniphier-ld6b-pinctrl" }, 1300 1255 { .compatible = "socionext,ph1-ld6b-pinctrl" }, 1301 1256 { /* sentinel */ } 1302 1257 }; 1303 - MODULE_DEVICE_TABLE(of, ph1_ld6b_pinctrl_match); 1258 + MODULE_DEVICE_TABLE(of, uniphier_ld6b_pinctrl_match); 1304 1259 1305 - static struct platform_driver ph1_ld6b_pinctrl_driver = { 1306 - .probe = ph1_ld6b_pinctrl_probe, 1260 + static struct platform_driver uniphier_ld6b_pinctrl_driver = { 1261 + .probe = uniphier_ld6b_pinctrl_probe, 1307 1262 .driver = { 1308 - .name = DRIVER_NAME, 1309 - .of_match_table = ph1_ld6b_pinctrl_match, 1263 + .name = "uniphier-ld6b-pinctrl", 1264 + .of_match_table = uniphier_ld6b_pinctrl_match, 1310 1265 }, 1311 1266 }; 1312 - module_platform_driver(ph1_ld6b_pinctrl_driver); 1267 + module_platform_driver(uniphier_ld6b_pinctrl_driver); 1313 1268 1314 1269 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1315 1270 MODULE_DESCRIPTION("UniPhier PH1-LD6b pinctrl driver");
+437 -382
drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
··· 19 19 20 20 #include "pinctrl-uniphier.h" 21 21 22 - #define DRIVER_NAME "ph1-pro4-pinctrl" 23 - 24 - static const struct pinctrl_pin_desc ph1_pro4_pins[] = { 22 + static const struct pinctrl_pin_desc uniphier_pro4_pins[] = { 25 23 UNIPHIER_PINCTRL_PIN(0, "CK24O", UNIPHIER_PIN_IECTRL_NONE, 26 - 0, UNIPHIER_PIN_DRV_4_8, 24 + 0, UNIPHIER_PIN_DRV_1BIT, 27 25 0, UNIPHIER_PIN_PULL_DOWN), 28 26 UNIPHIER_PINCTRL_PIN(1, "VC27A", UNIPHIER_PIN_IECTRL_NONE, 29 - 1, UNIPHIER_PIN_DRV_4_8, 27 + 1, UNIPHIER_PIN_DRV_1BIT, 30 28 1, UNIPHIER_PIN_PULL_DOWN), 31 29 UNIPHIER_PINCTRL_PIN(2, "CK27AI", UNIPHIER_PIN_IECTRL_NONE, 32 - 2, UNIPHIER_PIN_DRV_4_8, 30 + 2, UNIPHIER_PIN_DRV_1BIT, 33 31 2, UNIPHIER_PIN_PULL_DOWN), 34 32 UNIPHIER_PINCTRL_PIN(3, "CK27AO", UNIPHIER_PIN_IECTRL_NONE, 35 - 3, UNIPHIER_PIN_DRV_4_8, 33 + 3, UNIPHIER_PIN_DRV_1BIT, 36 34 3, UNIPHIER_PIN_PULL_DOWN), 37 35 UNIPHIER_PINCTRL_PIN(4, "CKSEL", UNIPHIER_PIN_IECTRL_NONE, 38 - 4, UNIPHIER_PIN_DRV_4_8, 36 + 4, UNIPHIER_PIN_DRV_1BIT, 39 37 4, UNIPHIER_PIN_PULL_UP), 40 38 UNIPHIER_PINCTRL_PIN(5, "CK27AV", UNIPHIER_PIN_IECTRL_NONE, 41 - 5, UNIPHIER_PIN_DRV_4_8, 39 + 5, UNIPHIER_PIN_DRV_1BIT, 42 40 5, UNIPHIER_PIN_PULL_DOWN), 43 41 UNIPHIER_PINCTRL_PIN(6, "AEXCKA", UNIPHIER_PIN_IECTRL_NONE, 44 - 6, UNIPHIER_PIN_DRV_4_8, 42 + 6, UNIPHIER_PIN_DRV_1BIT, 45 43 6, UNIPHIER_PIN_PULL_DOWN), 46 44 UNIPHIER_PINCTRL_PIN(7, "ASEL", UNIPHIER_PIN_IECTRL_NONE, 47 - 7, UNIPHIER_PIN_DRV_4_8, 45 + 7, UNIPHIER_PIN_DRV_1BIT, 48 46 7, UNIPHIER_PIN_PULL_DOWN), 49 47 UNIPHIER_PINCTRL_PIN(8, "ARCRESET", UNIPHIER_PIN_IECTRL_NONE, 50 - 8, UNIPHIER_PIN_DRV_4_8, 48 + 8, UNIPHIER_PIN_DRV_1BIT, 51 49 8, UNIPHIER_PIN_PULL_DOWN), 52 50 UNIPHIER_PINCTRL_PIN(9, "ARCUNLOCK", UNIPHIER_PIN_IECTRL_NONE, 53 - 9, UNIPHIER_PIN_DRV_4_8, 51 + 9, UNIPHIER_PIN_DRV_1BIT, 54 52 9, UNIPHIER_PIN_PULL_DOWN), 55 53 UNIPHIER_PINCTRL_PIN(10, "XSRST", UNIPHIER_PIN_IECTRL_NONE, 56 - 10, UNIPHIER_PIN_DRV_4_8, 54 + 10, UNIPHIER_PIN_DRV_1BIT, 57 55 10, UNIPHIER_PIN_PULL_DOWN), 58 56 UNIPHIER_PINCTRL_PIN(11, "XNMIRQ", UNIPHIER_PIN_IECTRL_NONE, 59 - 11, UNIPHIER_PIN_DRV_4_8, 57 + 11, UNIPHIER_PIN_DRV_1BIT, 60 58 11, UNIPHIER_PIN_PULL_UP), 61 59 UNIPHIER_PINCTRL_PIN(12, "XSCIRQ", UNIPHIER_PIN_IECTRL_NONE, 62 - 12, UNIPHIER_PIN_DRV_4_8, 60 + 12, UNIPHIER_PIN_DRV_1BIT, 63 61 12, UNIPHIER_PIN_PULL_UP), 64 62 UNIPHIER_PINCTRL_PIN(13, "EXTRG", UNIPHIER_PIN_IECTRL_NONE, 65 - 13, UNIPHIER_PIN_DRV_4_8, 63 + 13, UNIPHIER_PIN_DRV_1BIT, 66 64 13, UNIPHIER_PIN_PULL_DOWN), 67 65 UNIPHIER_PINCTRL_PIN(14, "TRCCLK", UNIPHIER_PIN_IECTRL_NONE, 68 - 14, UNIPHIER_PIN_DRV_4_8, 66 + 14, UNIPHIER_PIN_DRV_1BIT, 69 67 14, UNIPHIER_PIN_PULL_DOWN), 70 68 UNIPHIER_PINCTRL_PIN(15, "TRCCTL", UNIPHIER_PIN_IECTRL_NONE, 71 - 15, UNIPHIER_PIN_DRV_4_8, 69 + 15, UNIPHIER_PIN_DRV_1BIT, 72 70 15, UNIPHIER_PIN_PULL_DOWN), 73 71 UNIPHIER_PINCTRL_PIN(16, "TRCD0", UNIPHIER_PIN_IECTRL_NONE, 74 - 16, UNIPHIER_PIN_DRV_4_8, 72 + 16, UNIPHIER_PIN_DRV_1BIT, 75 73 16, UNIPHIER_PIN_PULL_DOWN), 76 74 UNIPHIER_PINCTRL_PIN(17, "TRCD1", UNIPHIER_PIN_IECTRL_NONE, 77 - 17, UNIPHIER_PIN_DRV_4_8, 75 + 17, UNIPHIER_PIN_DRV_1BIT, 78 76 17, UNIPHIER_PIN_PULL_DOWN), 79 77 UNIPHIER_PINCTRL_PIN(18, "TRCD2", UNIPHIER_PIN_IECTRL_NONE, 80 - 18, UNIPHIER_PIN_DRV_4_8, 78 + 18, UNIPHIER_PIN_DRV_1BIT, 81 79 18, UNIPHIER_PIN_PULL_DOWN), 82 80 UNIPHIER_PINCTRL_PIN(19, "TRCD3", UNIPHIER_PIN_IECTRL_NONE, 83 - 19, UNIPHIER_PIN_DRV_4_8, 81 + 19, UNIPHIER_PIN_DRV_1BIT, 84 82 19, UNIPHIER_PIN_PULL_DOWN), 85 83 UNIPHIER_PINCTRL_PIN(20, "TRCD4", UNIPHIER_PIN_IECTRL_NONE, 86 - 20, UNIPHIER_PIN_DRV_4_8, 84 + 20, UNIPHIER_PIN_DRV_1BIT, 87 85 20, UNIPHIER_PIN_PULL_DOWN), 88 86 UNIPHIER_PINCTRL_PIN(21, "TRCD5", UNIPHIER_PIN_IECTRL_NONE, 89 - 21, UNIPHIER_PIN_DRV_4_8, 87 + 21, UNIPHIER_PIN_DRV_1BIT, 90 88 21, UNIPHIER_PIN_PULL_DOWN), 91 89 UNIPHIER_PINCTRL_PIN(22, "TRCD6", UNIPHIER_PIN_IECTRL_NONE, 92 - 22, UNIPHIER_PIN_DRV_4_8, 90 + 22, UNIPHIER_PIN_DRV_1BIT, 93 91 22, UNIPHIER_PIN_PULL_DOWN), 94 92 UNIPHIER_PINCTRL_PIN(23, "TRCD7", UNIPHIER_PIN_IECTRL_NONE, 95 - 23, UNIPHIER_PIN_DRV_4_8, 93 + 23, UNIPHIER_PIN_DRV_1BIT, 96 94 23, UNIPHIER_PIN_PULL_DOWN), 97 95 UNIPHIER_PINCTRL_PIN(24, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 98 - 24, UNIPHIER_PIN_DRV_4_8, 96 + 24, UNIPHIER_PIN_DRV_1BIT, 99 97 24, UNIPHIER_PIN_PULL_UP), 100 98 UNIPHIER_PINCTRL_PIN(25, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 101 - 25, UNIPHIER_PIN_DRV_4_8, 99 + 25, UNIPHIER_PIN_DRV_1BIT, 102 100 25, UNIPHIER_PIN_PULL_UP), 103 101 UNIPHIER_PINCTRL_PIN(26, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 104 - 26, UNIPHIER_PIN_DRV_4_8, 102 + 26, UNIPHIER_PIN_DRV_1BIT, 105 103 26, UNIPHIER_PIN_PULL_UP), 106 104 UNIPHIER_PINCTRL_PIN(27, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 107 - 27, UNIPHIER_PIN_DRV_4_8, 105 + 27, UNIPHIER_PIN_DRV_1BIT, 108 106 27, UNIPHIER_PIN_PULL_UP), 109 107 UNIPHIER_PINCTRL_PIN(28, "ES0", UNIPHIER_PIN_IECTRL_NONE, 110 - 28, UNIPHIER_PIN_DRV_4_8, 108 + 28, UNIPHIER_PIN_DRV_1BIT, 111 109 28, UNIPHIER_PIN_PULL_DOWN), 112 110 UNIPHIER_PINCTRL_PIN(29, "ES1", UNIPHIER_PIN_IECTRL_NONE, 113 - 29, UNIPHIER_PIN_DRV_4_8, 111 + 29, UNIPHIER_PIN_DRV_1BIT, 114 112 29, UNIPHIER_PIN_PULL_DOWN), 115 113 UNIPHIER_PINCTRL_PIN(30, "ES2", UNIPHIER_PIN_IECTRL_NONE, 116 - 30, UNIPHIER_PIN_DRV_4_8, 114 + 30, UNIPHIER_PIN_DRV_1BIT, 117 115 30, UNIPHIER_PIN_PULL_DOWN), 118 116 UNIPHIER_PINCTRL_PIN(31, "ED0", UNIPHIER_PIN_IECTRL_NONE, 119 - 31, UNIPHIER_PIN_DRV_4_8, 117 + 31, UNIPHIER_PIN_DRV_1BIT, 120 118 31, UNIPHIER_PIN_PULL_DOWN), 121 119 UNIPHIER_PINCTRL_PIN(32, "ED1", UNIPHIER_PIN_IECTRL_NONE, 122 - 32, UNIPHIER_PIN_DRV_4_8, 120 + 32, UNIPHIER_PIN_DRV_1BIT, 123 121 32, UNIPHIER_PIN_PULL_DOWN), 124 122 UNIPHIER_PINCTRL_PIN(33, "ED2", UNIPHIER_PIN_IECTRL_NONE, 125 - 33, UNIPHIER_PIN_DRV_4_8, 123 + 33, UNIPHIER_PIN_DRV_1BIT, 126 124 33, UNIPHIER_PIN_PULL_DOWN), 127 125 UNIPHIER_PINCTRL_PIN(34, "ED3", UNIPHIER_PIN_IECTRL_NONE, 128 - 34, UNIPHIER_PIN_DRV_4_8, 126 + 34, UNIPHIER_PIN_DRV_1BIT, 129 127 34, UNIPHIER_PIN_PULL_DOWN), 130 128 UNIPHIER_PINCTRL_PIN(35, "ED4", UNIPHIER_PIN_IECTRL_NONE, 131 - 35, UNIPHIER_PIN_DRV_4_8, 129 + 35, UNIPHIER_PIN_DRV_1BIT, 132 130 35, UNIPHIER_PIN_PULL_DOWN), 133 131 UNIPHIER_PINCTRL_PIN(36, "ED5", UNIPHIER_PIN_IECTRL_NONE, 134 - 36, UNIPHIER_PIN_DRV_4_8, 132 + 36, UNIPHIER_PIN_DRV_1BIT, 135 133 36, UNIPHIER_PIN_PULL_DOWN), 136 134 UNIPHIER_PINCTRL_PIN(37, "ED6", UNIPHIER_PIN_IECTRL_NONE, 137 - 37, UNIPHIER_PIN_DRV_4_8, 135 + 37, UNIPHIER_PIN_DRV_1BIT, 138 136 37, UNIPHIER_PIN_PULL_DOWN), 139 137 UNIPHIER_PINCTRL_PIN(38, "ED7", UNIPHIER_PIN_IECTRL_NONE, 140 - 38, UNIPHIER_PIN_DRV_4_8, 138 + 38, UNIPHIER_PIN_DRV_1BIT, 141 139 38, UNIPHIER_PIN_PULL_DOWN), 142 140 UNIPHIER_PINCTRL_PIN(39, "BOOTSWAP", UNIPHIER_PIN_IECTRL_NONE, 143 - 39, UNIPHIER_PIN_DRV_NONE, 141 + -1, UNIPHIER_PIN_DRV_NONE, 144 142 39, UNIPHIER_PIN_PULL_UP), 145 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 145 40, UNIPHIER_PIN_PULL_UP), 148 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 148 41, UNIPHIER_PIN_PULL_UP), 151 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 151 42, UNIPHIER_PIN_PULL_UP), 154 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 154 43, UNIPHIER_PIN_PULL_UP), 157 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 157 44, UNIPHIER_PIN_PULL_UP), 160 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 160 45, UNIPHIER_PIN_PULL_UP), 163 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 163 46, UNIPHIER_PIN_PULL_UP), 166 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 166 47, UNIPHIER_PIN_PULL_UP), 169 167 UNIPHIER_PINCTRL_PIN(48, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 170 - 48, UNIPHIER_PIN_DRV_4_8, 168 + 48, UNIPHIER_PIN_DRV_1BIT, 171 169 48, UNIPHIER_PIN_PULL_DOWN), 172 170 UNIPHIER_PINCTRL_PIN(49, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 173 - 49, UNIPHIER_PIN_DRV_4_8, 171 + 49, UNIPHIER_PIN_DRV_1BIT, 174 172 49, UNIPHIER_PIN_PULL_DOWN), 175 173 UNIPHIER_PINCTRL_PIN(50, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 176 - 50, UNIPHIER_PIN_DRV_4_8, 174 + 50, UNIPHIER_PIN_DRV_1BIT, 177 175 50, UNIPHIER_PIN_PULL_UP), 178 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 178 51, UNIPHIER_PIN_PULL_UP), 181 179 UNIPHIER_PINCTRL_PIN(52, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 182 - 52, UNIPHIER_PIN_DRV_4_8, 180 + 52, UNIPHIER_PIN_DRV_1BIT, 183 181 52, UNIPHIER_PIN_PULL_DOWN), 184 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 184 53, UNIPHIER_PIN_PULL_UP), 187 185 UNIPHIER_PINCTRL_PIN(54, "NRYBY0", UNIPHIER_PIN_IECTRL_NONE, 188 - 54, UNIPHIER_PIN_DRV_4_8, 186 + 54, UNIPHIER_PIN_DRV_1BIT, 189 187 54, UNIPHIER_PIN_PULL_UP), 190 188 UNIPHIER_PINCTRL_PIN(55, "DMDSCLTST", UNIPHIER_PIN_IECTRL_NONE, 191 189 -1, UNIPHIER_PIN_DRV_NONE, 192 190 -1, UNIPHIER_PIN_PULL_NONE), 193 191 UNIPHIER_PINCTRL_PIN(56, "DMDSDATST", UNIPHIER_PIN_IECTRL_NONE, 194 - -1, UNIPHIER_PIN_DRV_FIXED_4, 192 + -1, UNIPHIER_PIN_DRV_FIXED4, 195 193 -1, UNIPHIER_PIN_PULL_NONE), 196 194 UNIPHIER_PINCTRL_PIN(57, "AGCI0", 3, 197 - -1, UNIPHIER_PIN_DRV_FIXED_4, 195 + -1, UNIPHIER_PIN_DRV_FIXED4, 198 196 55, UNIPHIER_PIN_PULL_DOWN), 199 197 UNIPHIER_PINCTRL_PIN(58, "DMDSCL0", UNIPHIER_PIN_IECTRL_NONE, 200 - -1, UNIPHIER_PIN_DRV_FIXED_4, 198 + -1, UNIPHIER_PIN_DRV_FIXED4, 201 199 -1, UNIPHIER_PIN_PULL_NONE), 202 200 UNIPHIER_PINCTRL_PIN(59, "DMDSDA0", UNIPHIER_PIN_IECTRL_NONE, 203 - -1, UNIPHIER_PIN_DRV_FIXED_4, 201 + -1, UNIPHIER_PIN_DRV_FIXED4, 204 202 -1, UNIPHIER_PIN_PULL_NONE), 205 203 UNIPHIER_PINCTRL_PIN(60, "AGCBS0", 5, 206 - -1, UNIPHIER_PIN_DRV_FIXED_4, 204 + -1, UNIPHIER_PIN_DRV_FIXED4, 207 205 56, UNIPHIER_PIN_PULL_DOWN), 208 206 UNIPHIER_PINCTRL_PIN(61, "DMDSCL1", UNIPHIER_PIN_IECTRL_NONE, 209 - -1, UNIPHIER_PIN_DRV_FIXED_4, 207 + -1, UNIPHIER_PIN_DRV_FIXED4, 210 208 -1, UNIPHIER_PIN_PULL_NONE), 211 209 UNIPHIER_PINCTRL_PIN(62, "DMDSDA1", UNIPHIER_PIN_IECTRL_NONE, 212 - -1, UNIPHIER_PIN_DRV_FIXED_4, 210 + -1, UNIPHIER_PIN_DRV_FIXED4, 213 211 -1, UNIPHIER_PIN_PULL_NONE), 214 212 UNIPHIER_PINCTRL_PIN(63, "ANTSHORT", UNIPHIER_PIN_IECTRL_NONE, 215 - 57, UNIPHIER_PIN_DRV_4_8, 213 + 57, UNIPHIER_PIN_DRV_1BIT, 216 214 57, UNIPHIER_PIN_PULL_UP), 217 215 UNIPHIER_PINCTRL_PIN(64, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE, 218 - 58, UNIPHIER_PIN_DRV_4_8, 216 + 58, UNIPHIER_PIN_DRV_1BIT, 219 217 58, UNIPHIER_PIN_PULL_DOWN), 220 218 UNIPHIER_PINCTRL_PIN(65, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE, 221 - 59, UNIPHIER_PIN_DRV_4_8, 219 + 59, UNIPHIER_PIN_DRV_1BIT, 222 220 59, UNIPHIER_PIN_PULL_DOWN), 223 221 UNIPHIER_PINCTRL_PIN(66, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE, 224 - 60, UNIPHIER_PIN_DRV_4_8, 222 + 60, UNIPHIER_PIN_DRV_1BIT, 225 223 60, UNIPHIER_PIN_PULL_DOWN), 226 224 UNIPHIER_PINCTRL_PIN(67, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE, 227 - 61, UNIPHIER_PIN_DRV_4_8, 225 + 61, UNIPHIER_PIN_DRV_1BIT, 228 226 61, UNIPHIER_PIN_PULL_DOWN), 229 227 UNIPHIER_PINCTRL_PIN(68, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE, 230 - 62, UNIPHIER_PIN_DRV_4_8, 228 + 62, UNIPHIER_PIN_DRV_1BIT, 231 229 62, UNIPHIER_PIN_PULL_DOWN), 232 230 UNIPHIER_PINCTRL_PIN(69, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE, 233 - 63, UNIPHIER_PIN_DRV_4_8, 231 + 63, UNIPHIER_PIN_DRV_1BIT, 234 232 63, UNIPHIER_PIN_PULL_DOWN), 235 233 UNIPHIER_PINCTRL_PIN(70, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE, 236 - 64, UNIPHIER_PIN_DRV_4_8, 234 + 64, UNIPHIER_PIN_DRV_1BIT, 237 235 64, UNIPHIER_PIN_PULL_DOWN), 238 236 UNIPHIER_PINCTRL_PIN(71, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE, 239 - 65, UNIPHIER_PIN_DRV_4_8, 237 + 65, UNIPHIER_PIN_DRV_1BIT, 240 238 65, UNIPHIER_PIN_PULL_DOWN), 241 239 UNIPHIER_PINCTRL_PIN(72, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE, 242 - 66, UNIPHIER_PIN_DRV_4_8, 240 + 66, UNIPHIER_PIN_DRV_1BIT, 243 241 66, UNIPHIER_PIN_PULL_DOWN), 244 242 UNIPHIER_PINCTRL_PIN(73, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE, 245 - 67, UNIPHIER_PIN_DRV_4_8, 243 + 67, UNIPHIER_PIN_DRV_1BIT, 246 244 67, UNIPHIER_PIN_PULL_DOWN), 247 245 UNIPHIER_PINCTRL_PIN(74, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE, 248 - 68, UNIPHIER_PIN_DRV_4_8, 246 + 68, UNIPHIER_PIN_DRV_1BIT, 249 247 68, UNIPHIER_PIN_PULL_DOWN), 250 248 UNIPHIER_PINCTRL_PIN(75, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE, 251 - 69, UNIPHIER_PIN_DRV_4_8, 249 + 69, UNIPHIER_PIN_DRV_1BIT, 252 250 69, UNIPHIER_PIN_PULL_DOWN), 253 251 UNIPHIER_PINCTRL_PIN(76, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE, 254 - 70, UNIPHIER_PIN_DRV_4_8, 252 + 70, UNIPHIER_PIN_DRV_1BIT, 255 253 70, UNIPHIER_PIN_PULL_DOWN), 256 254 UNIPHIER_PINCTRL_PIN(77, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE, 257 - 71, UNIPHIER_PIN_DRV_4_8, 255 + 71, UNIPHIER_PIN_DRV_1BIT, 258 256 71, UNIPHIER_PIN_PULL_DOWN), 259 257 UNIPHIER_PINCTRL_PIN(78, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE, 260 - 72, UNIPHIER_PIN_DRV_4_8, 258 + 72, UNIPHIER_PIN_DRV_1BIT, 261 259 72, UNIPHIER_PIN_PULL_DOWN), 262 260 UNIPHIER_PINCTRL_PIN(79, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE, 263 - 73, UNIPHIER_PIN_DRV_4_8, 261 + 73, UNIPHIER_PIN_DRV_1BIT, 264 262 73, UNIPHIER_PIN_PULL_DOWN), 265 263 UNIPHIER_PINCTRL_PIN(80, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE, 266 - 74, UNIPHIER_PIN_DRV_4_8, 264 + 74, UNIPHIER_PIN_DRV_1BIT, 267 265 74, UNIPHIER_PIN_PULL_DOWN), 268 266 UNIPHIER_PINCTRL_PIN(81, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE, 269 - 75, UNIPHIER_PIN_DRV_4_8, 267 + 75, UNIPHIER_PIN_DRV_1BIT, 270 268 75, UNIPHIER_PIN_PULL_DOWN), 271 269 UNIPHIER_PINCTRL_PIN(82, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE, 272 - 76, UNIPHIER_PIN_DRV_4_8, 270 + 76, UNIPHIER_PIN_DRV_1BIT, 273 271 76, UNIPHIER_PIN_PULL_DOWN), 274 272 UNIPHIER_PINCTRL_PIN(83, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE, 275 - 77, UNIPHIER_PIN_DRV_4_8, 273 + 77, UNIPHIER_PIN_DRV_1BIT, 276 274 77, UNIPHIER_PIN_PULL_DOWN), 277 275 UNIPHIER_PINCTRL_PIN(84, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE, 278 - 78, UNIPHIER_PIN_DRV_4_8, 276 + 78, UNIPHIER_PIN_DRV_1BIT, 279 277 78, UNIPHIER_PIN_PULL_DOWN), 280 278 UNIPHIER_PINCTRL_PIN(85, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE, 281 - 79, UNIPHIER_PIN_DRV_4_8, 279 + 79, UNIPHIER_PIN_DRV_1BIT, 282 280 79, UNIPHIER_PIN_PULL_DOWN), 283 281 UNIPHIER_PINCTRL_PIN(86, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE, 284 - 80, UNIPHIER_PIN_DRV_4_8, 282 + 80, UNIPHIER_PIN_DRV_1BIT, 285 283 80, UNIPHIER_PIN_PULL_DOWN), 286 284 UNIPHIER_PINCTRL_PIN(87, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE, 287 - 81, UNIPHIER_PIN_DRV_4_8, 285 + 81, UNIPHIER_PIN_DRV_1BIT, 288 286 81, UNIPHIER_PIN_PULL_DOWN), 289 287 UNIPHIER_PINCTRL_PIN(88, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE, 290 - 82, UNIPHIER_PIN_DRV_4_8, 288 + 82, UNIPHIER_PIN_DRV_1BIT, 291 289 82, UNIPHIER_PIN_PULL_DOWN), 292 290 UNIPHIER_PINCTRL_PIN(89, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE, 293 - 83, UNIPHIER_PIN_DRV_4_8, 291 + 83, UNIPHIER_PIN_DRV_1BIT, 294 292 83, UNIPHIER_PIN_PULL_DOWN), 295 293 UNIPHIER_PINCTRL_PIN(90, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE, 296 - 84, UNIPHIER_PIN_DRV_4_8, 294 + 84, UNIPHIER_PIN_DRV_1BIT, 297 295 84, UNIPHIER_PIN_PULL_DOWN), 298 296 UNIPHIER_PINCTRL_PIN(91, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE, 299 - 85, UNIPHIER_PIN_DRV_4_8, 297 + 85, UNIPHIER_PIN_DRV_1BIT, 300 298 85, UNIPHIER_PIN_PULL_DOWN), 301 299 UNIPHIER_PINCTRL_PIN(92, "CKFEO", UNIPHIER_PIN_IECTRL_NONE, 302 - 86, UNIPHIER_PIN_DRV_4_8, 300 + 86, UNIPHIER_PIN_DRV_1BIT, 303 301 86, UNIPHIER_PIN_PULL_DOWN), 304 302 UNIPHIER_PINCTRL_PIN(93, "XFERST", UNIPHIER_PIN_IECTRL_NONE, 305 - 87, UNIPHIER_PIN_DRV_4_8, 303 + 87, UNIPHIER_PIN_DRV_1BIT, 306 304 87, UNIPHIER_PIN_PULL_DOWN), 307 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 307 88, UNIPHIER_PIN_PULL_DOWN), 310 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 310 89, UNIPHIER_PIN_PULL_DOWN), 313 311 UNIPHIER_PINCTRL_PIN(96, "XFEIRQ0", UNIPHIER_PIN_IECTRL_NONE, 314 - 90, UNIPHIER_PIN_DRV_4_8, 312 + 90, UNIPHIER_PIN_DRV_1BIT, 315 313 90, UNIPHIER_PIN_PULL_DOWN), 316 314 UNIPHIER_PINCTRL_PIN(97, "XFEIRQ1", UNIPHIER_PIN_IECTRL_NONE, 317 - 91, UNIPHIER_PIN_DRV_4_8, 315 + 91, UNIPHIER_PIN_DRV_1BIT, 318 316 91, UNIPHIER_PIN_PULL_DOWN), 319 317 UNIPHIER_PINCTRL_PIN(98, "XFEIRQ2", UNIPHIER_PIN_IECTRL_NONE, 320 - 92, UNIPHIER_PIN_DRV_4_8, 318 + 92, UNIPHIER_PIN_DRV_1BIT, 321 319 92, UNIPHIER_PIN_PULL_DOWN), 322 320 UNIPHIER_PINCTRL_PIN(99, "XFEIRQ3", UNIPHIER_PIN_IECTRL_NONE, 323 - 93, UNIPHIER_PIN_DRV_4_8, 321 + 93, UNIPHIER_PIN_DRV_1BIT, 324 322 93, UNIPHIER_PIN_PULL_DOWN), 325 323 UNIPHIER_PINCTRL_PIN(100, "XFEIRQ4", UNIPHIER_PIN_IECTRL_NONE, 326 - 94, UNIPHIER_PIN_DRV_4_8, 324 + 94, UNIPHIER_PIN_DRV_1BIT, 327 325 94, UNIPHIER_PIN_PULL_DOWN), 328 326 UNIPHIER_PINCTRL_PIN(101, "XFEIRQ5", UNIPHIER_PIN_IECTRL_NONE, 329 - 95, UNIPHIER_PIN_DRV_4_8, 327 + 95, UNIPHIER_PIN_DRV_1BIT, 330 328 95, UNIPHIER_PIN_PULL_DOWN), 331 329 UNIPHIER_PINCTRL_PIN(102, "XFEIRQ6", UNIPHIER_PIN_IECTRL_NONE, 332 - 96, UNIPHIER_PIN_DRV_4_8, 330 + 96, UNIPHIER_PIN_DRV_1BIT, 333 331 96, UNIPHIER_PIN_PULL_DOWN), 334 332 UNIPHIER_PINCTRL_PIN(103, "SMTCLK0", UNIPHIER_PIN_IECTRL_NONE, 335 - 97, UNIPHIER_PIN_DRV_4_8, 333 + 97, UNIPHIER_PIN_DRV_1BIT, 336 334 97, UNIPHIER_PIN_PULL_DOWN), 337 335 UNIPHIER_PINCTRL_PIN(104, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE, 338 - 98, UNIPHIER_PIN_DRV_4_8, 336 + 98, UNIPHIER_PIN_DRV_1BIT, 339 337 98, UNIPHIER_PIN_PULL_DOWN), 340 338 UNIPHIER_PINCTRL_PIN(105, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE, 341 - 99, UNIPHIER_PIN_DRV_4_8, 339 + 99, UNIPHIER_PIN_DRV_1BIT, 342 340 99, UNIPHIER_PIN_PULL_UP), 343 341 UNIPHIER_PINCTRL_PIN(106, "SMTD0", UNIPHIER_PIN_IECTRL_NONE, 344 - 100, UNIPHIER_PIN_DRV_4_8, 342 + 100, UNIPHIER_PIN_DRV_1BIT, 345 343 100, UNIPHIER_PIN_PULL_UP), 346 344 UNIPHIER_PINCTRL_PIN(107, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE, 347 - 101, UNIPHIER_PIN_DRV_4_8, 345 + 101, UNIPHIER_PIN_DRV_1BIT, 348 346 101, UNIPHIER_PIN_PULL_DOWN), 349 347 UNIPHIER_PINCTRL_PIN(108, "SMTDET0", UNIPHIER_PIN_IECTRL_NONE, 350 - 102, UNIPHIER_PIN_DRV_4_8, 348 + 102, UNIPHIER_PIN_DRV_1BIT, 351 349 102, UNIPHIER_PIN_PULL_UP), 352 350 UNIPHIER_PINCTRL_PIN(109, "SMTCLK1", UNIPHIER_PIN_IECTRL_NONE, 353 - 103, UNIPHIER_PIN_DRV_4_8, 351 + 103, UNIPHIER_PIN_DRV_1BIT, 354 352 103, UNIPHIER_PIN_PULL_DOWN), 355 353 UNIPHIER_PINCTRL_PIN(110, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE, 356 - 104, UNIPHIER_PIN_DRV_4_8, 354 + 104, UNIPHIER_PIN_DRV_1BIT, 357 355 104, UNIPHIER_PIN_PULL_DOWN), 358 356 UNIPHIER_PINCTRL_PIN(111, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE, 359 - 105, UNIPHIER_PIN_DRV_4_8, 357 + 105, UNIPHIER_PIN_DRV_1BIT, 360 358 105, UNIPHIER_PIN_PULL_UP), 361 359 UNIPHIER_PINCTRL_PIN(112, "SMTD1", UNIPHIER_PIN_IECTRL_NONE, 362 - 106, UNIPHIER_PIN_DRV_4_8, 360 + 106, UNIPHIER_PIN_DRV_1BIT, 363 361 106, UNIPHIER_PIN_PULL_UP), 364 362 UNIPHIER_PINCTRL_PIN(113, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE, 365 - 107, UNIPHIER_PIN_DRV_4_8, 363 + 107, UNIPHIER_PIN_DRV_1BIT, 366 364 107, UNIPHIER_PIN_PULL_DOWN), 367 365 UNIPHIER_PINCTRL_PIN(114, "SMTDET1", UNIPHIER_PIN_IECTRL_NONE, 368 - 108, UNIPHIER_PIN_DRV_4_8, 366 + 108, UNIPHIER_PIN_DRV_1BIT, 369 367 108, UNIPHIER_PIN_PULL_UP), 370 368 UNIPHIER_PINCTRL_PIN(115, "XINTM", UNIPHIER_PIN_IECTRL_NONE, 371 - 109, UNIPHIER_PIN_DRV_4_8, 369 + 109, UNIPHIER_PIN_DRV_1BIT, 372 370 109, UNIPHIER_PIN_PULL_UP), 373 371 UNIPHIER_PINCTRL_PIN(116, "SCLKM", UNIPHIER_PIN_IECTRL_NONE, 374 - 110, UNIPHIER_PIN_DRV_4_8, 372 + 110, UNIPHIER_PIN_DRV_1BIT, 375 373 110, UNIPHIER_PIN_PULL_UP), 376 374 UNIPHIER_PINCTRL_PIN(117, "SBMTP", UNIPHIER_PIN_IECTRL_NONE, 377 - 111, UNIPHIER_PIN_DRV_4_8, 375 + 111, UNIPHIER_PIN_DRV_1BIT, 378 376 111, UNIPHIER_PIN_PULL_UP), 379 377 UNIPHIER_PINCTRL_PIN(118, "SBPTM", UNIPHIER_PIN_IECTRL_NONE, 380 - 112, UNIPHIER_PIN_DRV_4_8, 378 + 112, UNIPHIER_PIN_DRV_1BIT, 381 379 112, UNIPHIER_PIN_PULL_UP), 382 380 UNIPHIER_PINCTRL_PIN(119, "XMPREQ", UNIPHIER_PIN_IECTRL_NONE, 383 - 113, UNIPHIER_PIN_DRV_4_8, 381 + 113, UNIPHIER_PIN_DRV_1BIT, 384 382 113, UNIPHIER_PIN_PULL_UP), 385 383 UNIPHIER_PINCTRL_PIN(120, "XINTP", UNIPHIER_PIN_IECTRL_NONE, 386 - 114, UNIPHIER_PIN_DRV_4_8, 384 + 114, UNIPHIER_PIN_DRV_1BIT, 387 385 114, UNIPHIER_PIN_PULL_UP), 388 386 UNIPHIER_PINCTRL_PIN(121, "LPST", UNIPHIER_PIN_IECTRL_NONE, 389 - 115, UNIPHIER_PIN_DRV_4_8, 387 + 115, UNIPHIER_PIN_DRV_1BIT, 390 388 115, UNIPHIER_PIN_PULL_DOWN), 391 389 UNIPHIER_PINCTRL_PIN(122, "SDBOOT", UNIPHIER_PIN_IECTRL_NONE, 392 - 116, UNIPHIER_PIN_DRV_4_8, 390 + 116, UNIPHIER_PIN_DRV_1BIT, 393 391 116, UNIPHIER_PIN_PULL_UP), 394 392 UNIPHIER_PINCTRL_PIN(123, "BFAIL", UNIPHIER_PIN_IECTRL_NONE, 395 - 117, UNIPHIER_PIN_DRV_4_8, 393 + 117, UNIPHIER_PIN_DRV_1BIT, 396 394 117, UNIPHIER_PIN_PULL_DOWN), 397 395 UNIPHIER_PINCTRL_PIN(124, "XFWE", UNIPHIER_PIN_IECTRL_NONE, 398 - 118, UNIPHIER_PIN_DRV_4_8, 396 + 118, UNIPHIER_PIN_DRV_1BIT, 399 397 118, UNIPHIER_PIN_PULL_UP), 400 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 400 119, UNIPHIER_PIN_PULL_UP), 403 401 UNIPHIER_PINCTRL_PIN(126, "XDIAG0", UNIPHIER_PIN_IECTRL_NONE, 404 - 120, UNIPHIER_PIN_DRV_4_8, 402 + 120, UNIPHIER_PIN_DRV_1BIT, 405 403 120, UNIPHIER_PIN_PULL_UP), 406 404 UNIPHIER_PINCTRL_PIN(127, "RXD0", UNIPHIER_PIN_IECTRL_NONE, 407 - 121, UNIPHIER_PIN_DRV_4_8, 405 + 121, UNIPHIER_PIN_DRV_1BIT, 408 406 121, UNIPHIER_PIN_PULL_UP), 409 407 UNIPHIER_PINCTRL_PIN(128, "TXD0", UNIPHIER_PIN_IECTRL_NONE, 410 - 122, UNIPHIER_PIN_DRV_4_8, 408 + 122, UNIPHIER_PIN_DRV_1BIT, 411 409 122, UNIPHIER_PIN_PULL_UP), 412 410 UNIPHIER_PINCTRL_PIN(129, "RXD1", UNIPHIER_PIN_IECTRL_NONE, 413 - 123, UNIPHIER_PIN_DRV_4_8, 411 + 123, UNIPHIER_PIN_DRV_1BIT, 414 412 123, UNIPHIER_PIN_PULL_UP), 415 413 UNIPHIER_PINCTRL_PIN(130, "TXD1", UNIPHIER_PIN_IECTRL_NONE, 416 - 124, UNIPHIER_PIN_DRV_4_8, 414 + 124, UNIPHIER_PIN_DRV_1BIT, 417 415 124, UNIPHIER_PIN_PULL_UP), 418 416 UNIPHIER_PINCTRL_PIN(131, "RXD2", UNIPHIER_PIN_IECTRL_NONE, 419 - 125, UNIPHIER_PIN_DRV_4_8, 417 + 125, UNIPHIER_PIN_DRV_1BIT, 420 418 125, UNIPHIER_PIN_PULL_UP), 421 419 UNIPHIER_PINCTRL_PIN(132, "TXD2", UNIPHIER_PIN_IECTRL_NONE, 422 - 126, UNIPHIER_PIN_DRV_4_8, 420 + 126, UNIPHIER_PIN_DRV_1BIT, 423 421 126, UNIPHIER_PIN_PULL_UP), 424 422 UNIPHIER_PINCTRL_PIN(133, "SS0CS", UNIPHIER_PIN_IECTRL_NONE, 425 - 127, UNIPHIER_PIN_DRV_4_8, 423 + 127, UNIPHIER_PIN_DRV_1BIT, 426 424 127, UNIPHIER_PIN_PULL_UP), 427 425 UNIPHIER_PINCTRL_PIN(134, "SS0CLK", UNIPHIER_PIN_IECTRL_NONE, 428 - 128, UNIPHIER_PIN_DRV_4_8, 426 + 128, UNIPHIER_PIN_DRV_1BIT, 429 427 128, UNIPHIER_PIN_PULL_UP), 430 428 UNIPHIER_PINCTRL_PIN(135, "SS0DO", UNIPHIER_PIN_IECTRL_NONE, 431 - 129, UNIPHIER_PIN_DRV_4_8, 429 + 129, UNIPHIER_PIN_DRV_1BIT, 432 430 129, UNIPHIER_PIN_PULL_UP), 433 431 UNIPHIER_PINCTRL_PIN(136, "SS0DI", UNIPHIER_PIN_IECTRL_NONE, 434 - 130, UNIPHIER_PIN_DRV_4_8, 432 + 130, UNIPHIER_PIN_DRV_1BIT, 435 433 130, UNIPHIER_PIN_PULL_UP), 436 434 UNIPHIER_PINCTRL_PIN(137, "MS0CS0", UNIPHIER_PIN_IECTRL_NONE, 437 - 131, UNIPHIER_PIN_DRV_4_8, 435 + 131, UNIPHIER_PIN_DRV_1BIT, 438 436 131, UNIPHIER_PIN_PULL_UP), 439 437 UNIPHIER_PINCTRL_PIN(138, "MS0CLK", UNIPHIER_PIN_IECTRL_NONE, 440 - 132, UNIPHIER_PIN_DRV_4_8, 438 + 132, UNIPHIER_PIN_DRV_1BIT, 441 439 132, UNIPHIER_PIN_PULL_UP), 442 440 UNIPHIER_PINCTRL_PIN(139, "MS0DI", UNIPHIER_PIN_IECTRL_NONE, 443 - 133, UNIPHIER_PIN_DRV_4_8, 441 + 133, UNIPHIER_PIN_DRV_1BIT, 444 442 133, UNIPHIER_PIN_PULL_UP), 445 443 UNIPHIER_PINCTRL_PIN(140, "MS0DO", UNIPHIER_PIN_IECTRL_NONE, 446 - 134, UNIPHIER_PIN_DRV_4_8, 444 + 134, UNIPHIER_PIN_DRV_1BIT, 447 445 134, UNIPHIER_PIN_PULL_UP), 448 446 UNIPHIER_PINCTRL_PIN(141, "XMDMRST", UNIPHIER_PIN_IECTRL_NONE, 449 - 135, UNIPHIER_PIN_DRV_4_8, 447 + 135, UNIPHIER_PIN_DRV_1BIT, 450 448 135, UNIPHIER_PIN_PULL_DOWN), 451 449 UNIPHIER_PINCTRL_PIN(142, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 452 - -1, UNIPHIER_PIN_DRV_FIXED_4, 450 + -1, UNIPHIER_PIN_DRV_FIXED4, 453 451 -1, UNIPHIER_PIN_PULL_NONE), 454 452 UNIPHIER_PINCTRL_PIN(143, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 455 - -1, UNIPHIER_PIN_DRV_FIXED_4, 453 + -1, UNIPHIER_PIN_DRV_FIXED4, 456 454 -1, UNIPHIER_PIN_PULL_NONE), 457 455 UNIPHIER_PINCTRL_PIN(144, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 458 - -1, UNIPHIER_PIN_DRV_FIXED_4, 456 + -1, UNIPHIER_PIN_DRV_FIXED4, 459 457 -1, UNIPHIER_PIN_PULL_NONE), 460 458 UNIPHIER_PINCTRL_PIN(145, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 461 - -1, UNIPHIER_PIN_DRV_FIXED_4, 459 + -1, UNIPHIER_PIN_DRV_FIXED4, 462 460 -1, UNIPHIER_PIN_PULL_NONE), 463 461 UNIPHIER_PINCTRL_PIN(146, "SCL2", UNIPHIER_PIN_IECTRL_NONE, 464 - -1, UNIPHIER_PIN_DRV_FIXED_4, 462 + -1, UNIPHIER_PIN_DRV_FIXED4, 465 463 -1, UNIPHIER_PIN_PULL_NONE), 466 464 UNIPHIER_PINCTRL_PIN(147, "SDA2", UNIPHIER_PIN_IECTRL_NONE, 467 - -1, UNIPHIER_PIN_DRV_FIXED_4, 465 + -1, UNIPHIER_PIN_DRV_FIXED4, 468 466 -1, UNIPHIER_PIN_PULL_NONE), 469 467 UNIPHIER_PINCTRL_PIN(148, "SCL3", UNIPHIER_PIN_IECTRL_NONE, 470 - -1, UNIPHIER_PIN_DRV_FIXED_4, 468 + -1, UNIPHIER_PIN_DRV_FIXED4, 471 469 -1, UNIPHIER_PIN_PULL_NONE), 472 470 UNIPHIER_PINCTRL_PIN(149, "SDA3", UNIPHIER_PIN_IECTRL_NONE, 473 - -1, UNIPHIER_PIN_DRV_FIXED_4, 471 + -1, UNIPHIER_PIN_DRV_FIXED4, 474 472 -1, UNIPHIER_PIN_PULL_NONE), 475 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 475 136, UNIPHIER_PIN_PULL_UP), 478 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 478 137, UNIPHIER_PIN_PULL_UP), 481 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 481 138, UNIPHIER_PIN_PULL_UP), 484 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 484 139, UNIPHIER_PIN_PULL_UP), 487 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 487 141, UNIPHIER_PIN_PULL_UP), 490 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 490 140, UNIPHIER_PIN_PULL_UP), 493 491 UNIPHIER_PINCTRL_PIN(156, "SD0CD", UNIPHIER_PIN_IECTRL_NONE, 494 - 142, UNIPHIER_PIN_DRV_4_8, 492 + 142, UNIPHIER_PIN_DRV_1BIT, 495 493 142, UNIPHIER_PIN_PULL_UP), 496 494 UNIPHIER_PINCTRL_PIN(157, "SD0WP", UNIPHIER_PIN_IECTRL_NONE, 497 - 143, UNIPHIER_PIN_DRV_4_8, 495 + 143, UNIPHIER_PIN_DRV_1BIT, 498 496 143, UNIPHIER_PIN_PULL_UP), 499 497 UNIPHIER_PINCTRL_PIN(158, "SD0VTCG", UNIPHIER_PIN_IECTRL_NONE, 500 - 144, UNIPHIER_PIN_DRV_4_8, 498 + 144, UNIPHIER_PIN_DRV_1BIT, 501 499 144, UNIPHIER_PIN_PULL_UP), 502 500 UNIPHIER_PINCTRL_PIN(159, "CK25O", UNIPHIER_PIN_IECTRL_NONE, 503 - 145, UNIPHIER_PIN_DRV_4_8, 501 + 145, UNIPHIER_PIN_DRV_1BIT, 504 502 145, UNIPHIER_PIN_PULL_UP), 505 503 UNIPHIER_PINCTRL_PIN(160, "RGMII_TXCLK", 6, 506 - 146, UNIPHIER_PIN_DRV_4_8, 504 + 146, UNIPHIER_PIN_DRV_1BIT, 507 505 146, UNIPHIER_PIN_PULL_DOWN), 508 506 UNIPHIER_PINCTRL_PIN(161, "RGMII_TXD0", 6, 509 - 147, UNIPHIER_PIN_DRV_4_8, 507 + 147, UNIPHIER_PIN_DRV_1BIT, 510 508 147, UNIPHIER_PIN_PULL_DOWN), 511 509 UNIPHIER_PINCTRL_PIN(162, "RGMII_TXD1", 6, 512 - 148, UNIPHIER_PIN_DRV_4_8, 510 + 148, UNIPHIER_PIN_DRV_1BIT, 513 511 148, UNIPHIER_PIN_PULL_DOWN), 514 512 UNIPHIER_PINCTRL_PIN(163, "RGMII_TXD2", 6, 515 - 149, UNIPHIER_PIN_DRV_4_8, 513 + 149, UNIPHIER_PIN_DRV_1BIT, 516 514 149, UNIPHIER_PIN_PULL_DOWN), 517 515 UNIPHIER_PINCTRL_PIN(164, "RGMII_TXD3", 6, 518 - 150, UNIPHIER_PIN_DRV_4_8, 516 + 150, UNIPHIER_PIN_DRV_1BIT, 519 517 150, UNIPHIER_PIN_PULL_DOWN), 520 518 UNIPHIER_PINCTRL_PIN(165, "RGMII_TXCTL", 6, 521 - 151, UNIPHIER_PIN_DRV_4_8, 519 + 151, UNIPHIER_PIN_DRV_1BIT, 522 520 151, UNIPHIER_PIN_PULL_DOWN), 523 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 523 152, UNIPHIER_PIN_PULL_DOWN), 526 524 UNIPHIER_PINCTRL_PIN(167, "RGMII_RXCLK", 6, 527 - 153, UNIPHIER_PIN_DRV_4_8, 525 + 153, UNIPHIER_PIN_DRV_1BIT, 528 526 153, UNIPHIER_PIN_PULL_DOWN), 529 527 UNIPHIER_PINCTRL_PIN(168, "RGMII_RXD0", 6, 530 - 154, UNIPHIER_PIN_DRV_4_8, 528 + 154, UNIPHIER_PIN_DRV_1BIT, 531 529 154, UNIPHIER_PIN_PULL_DOWN), 532 530 UNIPHIER_PINCTRL_PIN(169, "RGMII_RXD1", 6, 533 - 155, UNIPHIER_PIN_DRV_4_8, 531 + 155, UNIPHIER_PIN_DRV_1BIT, 534 532 155, UNIPHIER_PIN_PULL_DOWN), 535 533 UNIPHIER_PINCTRL_PIN(170, "RGMII_RXD2", 6, 536 - 156, UNIPHIER_PIN_DRV_4_8, 534 + 156, UNIPHIER_PIN_DRV_1BIT, 537 535 156, UNIPHIER_PIN_PULL_DOWN), 538 536 UNIPHIER_PINCTRL_PIN(171, "RGMII_RXD3", 6, 539 - 157, UNIPHIER_PIN_DRV_4_8, 537 + 157, UNIPHIER_PIN_DRV_1BIT, 540 538 157, UNIPHIER_PIN_PULL_DOWN), 541 539 UNIPHIER_PINCTRL_PIN(172, "RGMII_RXCTL", 6, 542 - 158, UNIPHIER_PIN_DRV_4_8, 540 + 158, UNIPHIER_PIN_DRV_1BIT, 543 541 158, UNIPHIER_PIN_PULL_DOWN), 544 542 UNIPHIER_PINCTRL_PIN(173, "MII_RXER", 6, 545 - 159, UNIPHIER_PIN_DRV_4_8, 543 + 159, UNIPHIER_PIN_DRV_1BIT, 546 544 159, UNIPHIER_PIN_PULL_DOWN), 547 545 UNIPHIER_PINCTRL_PIN(174, "MII_CRS", 6, 548 - 160, UNIPHIER_PIN_DRV_4_8, 546 + 160, UNIPHIER_PIN_DRV_1BIT, 549 547 160, UNIPHIER_PIN_PULL_DOWN), 550 548 UNIPHIER_PINCTRL_PIN(175, "MII_COL", 6, 551 - 161, UNIPHIER_PIN_DRV_4_8, 549 + 161, UNIPHIER_PIN_DRV_1BIT, 552 550 161, UNIPHIER_PIN_PULL_DOWN), 553 551 UNIPHIER_PINCTRL_PIN(176, "MDC", 6, 554 - 162, UNIPHIER_PIN_DRV_4_8, 552 + 162, UNIPHIER_PIN_DRV_1BIT, 555 553 162, UNIPHIER_PIN_PULL_UP), 556 554 UNIPHIER_PINCTRL_PIN(177, "MDIO", 6, 557 - 163, UNIPHIER_PIN_DRV_4_8, 555 + 163, UNIPHIER_PIN_DRV_1BIT, 558 556 163, UNIPHIER_PIN_PULL_UP), 559 557 UNIPHIER_PINCTRL_PIN(178, "MDIO_INTL", 6, 560 - 164, UNIPHIER_PIN_DRV_4_8, 558 + 164, UNIPHIER_PIN_DRV_1BIT, 561 559 164, UNIPHIER_PIN_PULL_UP), 562 560 UNIPHIER_PINCTRL_PIN(179, "XETH_RST", 6, 563 - 165, UNIPHIER_PIN_DRV_4_8, 561 + 165, UNIPHIER_PIN_DRV_1BIT, 564 562 165, UNIPHIER_PIN_PULL_DOWN), 565 563 UNIPHIER_PINCTRL_PIN(180, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 566 - 166, UNIPHIER_PIN_DRV_4_8, 564 + 166, UNIPHIER_PIN_DRV_1BIT, 567 565 166, UNIPHIER_PIN_PULL_DOWN), 568 566 UNIPHIER_PINCTRL_PIN(181, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 569 - 167, UNIPHIER_PIN_DRV_4_8, 567 + 167, UNIPHIER_PIN_DRV_1BIT, 570 568 167, UNIPHIER_PIN_PULL_UP), 571 569 UNIPHIER_PINCTRL_PIN(182, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 572 - 168, UNIPHIER_PIN_DRV_4_8, 570 + 168, UNIPHIER_PIN_DRV_1BIT, 573 571 168, UNIPHIER_PIN_PULL_DOWN), 574 572 UNIPHIER_PINCTRL_PIN(183, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 575 - 169, UNIPHIER_PIN_DRV_4_8, 573 + 169, UNIPHIER_PIN_DRV_1BIT, 576 574 169, UNIPHIER_PIN_PULL_UP), 577 575 UNIPHIER_PINCTRL_PIN(184, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 578 - 170, UNIPHIER_PIN_DRV_4_8, 576 + 170, UNIPHIER_PIN_DRV_1BIT, 579 577 170, UNIPHIER_PIN_PULL_DOWN), 580 578 UNIPHIER_PINCTRL_PIN(185, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 581 - 171, UNIPHIER_PIN_DRV_4_8, 579 + 171, UNIPHIER_PIN_DRV_1BIT, 582 580 171, UNIPHIER_PIN_PULL_UP), 583 581 UNIPHIER_PINCTRL_PIN(186, "USB2ID", UNIPHIER_PIN_IECTRL_NONE, 584 - 172, UNIPHIER_PIN_DRV_4_8, 582 + 172, UNIPHIER_PIN_DRV_1BIT, 585 583 172, UNIPHIER_PIN_PULL_UP), 586 584 UNIPHIER_PINCTRL_PIN(187, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE, 587 - 173, UNIPHIER_PIN_DRV_4_8, 585 + 173, UNIPHIER_PIN_DRV_1BIT, 588 586 173, UNIPHIER_PIN_PULL_DOWN), 589 587 UNIPHIER_PINCTRL_PIN(188, "USB3OD", UNIPHIER_PIN_IECTRL_NONE, 590 - 174, UNIPHIER_PIN_DRV_4_8, 588 + 174, UNIPHIER_PIN_DRV_1BIT, 591 589 174, UNIPHIER_PIN_PULL_UP), 592 590 UNIPHIER_PINCTRL_PIN(189, "LINKCLK", UNIPHIER_PIN_IECTRL_NONE, 593 - 175, UNIPHIER_PIN_DRV_4_8, 591 + 175, UNIPHIER_PIN_DRV_1BIT, 594 592 175, UNIPHIER_PIN_PULL_DOWN), 595 593 UNIPHIER_PINCTRL_PIN(190, "LINKREQ", UNIPHIER_PIN_IECTRL_NONE, 596 - 176, UNIPHIER_PIN_DRV_4_8, 594 + 176, UNIPHIER_PIN_DRV_1BIT, 597 595 176, UNIPHIER_PIN_PULL_DOWN), 598 596 UNIPHIER_PINCTRL_PIN(191, "LINKCTL0", UNIPHIER_PIN_IECTRL_NONE, 599 - 177, UNIPHIER_PIN_DRV_4_8, 597 + 177, UNIPHIER_PIN_DRV_1BIT, 600 598 177, UNIPHIER_PIN_PULL_DOWN), 601 599 UNIPHIER_PINCTRL_PIN(192, "LINKCTL1", UNIPHIER_PIN_IECTRL_NONE, 602 - 178, UNIPHIER_PIN_DRV_4_8, 600 + 178, UNIPHIER_PIN_DRV_1BIT, 603 601 178, UNIPHIER_PIN_PULL_DOWN), 604 602 UNIPHIER_PINCTRL_PIN(193, "LINKDT0", UNIPHIER_PIN_IECTRL_NONE, 605 - 179, UNIPHIER_PIN_DRV_4_8, 603 + 179, UNIPHIER_PIN_DRV_1BIT, 606 604 179, UNIPHIER_PIN_PULL_DOWN), 607 605 UNIPHIER_PINCTRL_PIN(194, "LINKDT1", UNIPHIER_PIN_IECTRL_NONE, 608 - 180, UNIPHIER_PIN_DRV_4_8, 606 + 180, UNIPHIER_PIN_DRV_1BIT, 609 607 180, UNIPHIER_PIN_PULL_DOWN), 610 608 UNIPHIER_PINCTRL_PIN(195, "LINKDT2", UNIPHIER_PIN_IECTRL_NONE, 611 - 181, UNIPHIER_PIN_DRV_4_8, 609 + 181, UNIPHIER_PIN_DRV_1BIT, 612 610 181, UNIPHIER_PIN_PULL_DOWN), 613 611 UNIPHIER_PINCTRL_PIN(196, "LINKDT3", UNIPHIER_PIN_IECTRL_NONE, 614 - 182, UNIPHIER_PIN_DRV_4_8, 612 + 182, UNIPHIER_PIN_DRV_1BIT, 615 613 182, UNIPHIER_PIN_PULL_DOWN), 616 614 UNIPHIER_PINCTRL_PIN(197, "LINKDT4", UNIPHIER_PIN_IECTRL_NONE, 617 - 183, UNIPHIER_PIN_DRV_4_8, 615 + 183, UNIPHIER_PIN_DRV_1BIT, 618 616 183, UNIPHIER_PIN_PULL_DOWN), 619 617 UNIPHIER_PINCTRL_PIN(198, "LINKDT5", UNIPHIER_PIN_IECTRL_NONE, 620 - 184, UNIPHIER_PIN_DRV_4_8, 618 + 184, UNIPHIER_PIN_DRV_1BIT, 621 619 184, UNIPHIER_PIN_PULL_DOWN), 622 620 UNIPHIER_PINCTRL_PIN(199, "LINKDT6", UNIPHIER_PIN_IECTRL_NONE, 623 - 185, UNIPHIER_PIN_DRV_4_8, 621 + 185, UNIPHIER_PIN_DRV_1BIT, 624 622 185, UNIPHIER_PIN_PULL_DOWN), 625 623 UNIPHIER_PINCTRL_PIN(200, "LINKDT7", UNIPHIER_PIN_IECTRL_NONE, 626 - 186, UNIPHIER_PIN_DRV_4_8, 624 + 186, UNIPHIER_PIN_DRV_1BIT, 627 625 186, UNIPHIER_PIN_PULL_DOWN), 628 626 UNIPHIER_PINCTRL_PIN(201, "CKDVO", UNIPHIER_PIN_IECTRL_NONE, 629 - 187, UNIPHIER_PIN_DRV_4_8, 627 + 187, UNIPHIER_PIN_DRV_1BIT, 630 628 187, UNIPHIER_PIN_PULL_DOWN), 631 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 631 188, UNIPHIER_PIN_PULL_DOWN), 634 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 634 189, UNIPHIER_PIN_PULL_DOWN), 637 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 637 190, UNIPHIER_PIN_PULL_DOWN), 640 638 UNIPHIER_PINCTRL_PIN(205, "CLK54O", UNIPHIER_PIN_IECTRL_NONE, 641 - 191, UNIPHIER_PIN_DRV_4_8, 639 + 191, UNIPHIER_PIN_DRV_1BIT, 642 640 191, UNIPHIER_PIN_PULL_DOWN), 643 641 UNIPHIER_PINCTRL_PIN(206, "CLK54I", UNIPHIER_PIN_IECTRL_NONE, 644 - 192, UNIPHIER_PIN_DRV_NONE, 642 + -1, UNIPHIER_PIN_DRV_NONE, 645 643 192, UNIPHIER_PIN_PULL_DOWN), 646 644 UNIPHIER_PINCTRL_PIN(207, "YIN0", UNIPHIER_PIN_IECTRL_NONE, 647 - 193, UNIPHIER_PIN_DRV_4_8, 645 + 193, UNIPHIER_PIN_DRV_1BIT, 648 646 193, UNIPHIER_PIN_PULL_DOWN), 649 647 UNIPHIER_PINCTRL_PIN(208, "YIN1", UNIPHIER_PIN_IECTRL_NONE, 650 - 194, UNIPHIER_PIN_DRV_4_8, 648 + 194, UNIPHIER_PIN_DRV_1BIT, 651 649 194, UNIPHIER_PIN_PULL_DOWN), 652 650 UNIPHIER_PINCTRL_PIN(209, "YIN2", UNIPHIER_PIN_IECTRL_NONE, 653 - 195, UNIPHIER_PIN_DRV_4_8, 651 + 195, UNIPHIER_PIN_DRV_1BIT, 654 652 195, UNIPHIER_PIN_PULL_DOWN), 655 653 UNIPHIER_PINCTRL_PIN(210, "YIN3", UNIPHIER_PIN_IECTRL_NONE, 656 - 196, UNIPHIER_PIN_DRV_4_8, 654 + 196, UNIPHIER_PIN_DRV_1BIT, 657 655 196, UNIPHIER_PIN_PULL_DOWN), 658 656 UNIPHIER_PINCTRL_PIN(211, "YIN4", UNIPHIER_PIN_IECTRL_NONE, 659 - 197, UNIPHIER_PIN_DRV_4_8, 657 + 197, UNIPHIER_PIN_DRV_1BIT, 660 658 197, UNIPHIER_PIN_PULL_DOWN), 661 659 UNIPHIER_PINCTRL_PIN(212, "YIN5", UNIPHIER_PIN_IECTRL_NONE, 662 - 198, UNIPHIER_PIN_DRV_4_8, 660 + 198, UNIPHIER_PIN_DRV_1BIT, 663 661 198, UNIPHIER_PIN_PULL_DOWN), 664 662 UNIPHIER_PINCTRL_PIN(213, "CIN0", UNIPHIER_PIN_IECTRL_NONE, 665 - 199, UNIPHIER_PIN_DRV_4_8, 663 + 199, UNIPHIER_PIN_DRV_1BIT, 666 664 199, UNIPHIER_PIN_PULL_DOWN), 667 665 UNIPHIER_PINCTRL_PIN(214, "CIN1", UNIPHIER_PIN_IECTRL_NONE, 668 - 200, UNIPHIER_PIN_DRV_4_8, 666 + 200, UNIPHIER_PIN_DRV_1BIT, 669 667 200, UNIPHIER_PIN_PULL_DOWN), 670 668 UNIPHIER_PINCTRL_PIN(215, "CIN2", UNIPHIER_PIN_IECTRL_NONE, 671 - 201, UNIPHIER_PIN_DRV_4_8, 669 + 201, UNIPHIER_PIN_DRV_1BIT, 672 670 201, UNIPHIER_PIN_PULL_DOWN), 673 671 UNIPHIER_PINCTRL_PIN(216, "CIN3", UNIPHIER_PIN_IECTRL_NONE, 674 - 202, UNIPHIER_PIN_DRV_4_8, 672 + 202, UNIPHIER_PIN_DRV_1BIT, 675 673 202, UNIPHIER_PIN_PULL_DOWN), 676 674 UNIPHIER_PINCTRL_PIN(217, "CIN4", UNIPHIER_PIN_IECTRL_NONE, 677 - 203, UNIPHIER_PIN_DRV_4_8, 675 + 203, UNIPHIER_PIN_DRV_1BIT, 678 676 203, UNIPHIER_PIN_PULL_DOWN), 679 677 UNIPHIER_PINCTRL_PIN(218, "CIN5", UNIPHIER_PIN_IECTRL_NONE, 680 - 204, UNIPHIER_PIN_DRV_4_8, 678 + 204, UNIPHIER_PIN_DRV_1BIT, 681 679 204, UNIPHIER_PIN_PULL_DOWN), 682 680 UNIPHIER_PINCTRL_PIN(219, "GCP", UNIPHIER_PIN_IECTRL_NONE, 683 - 205, UNIPHIER_PIN_DRV_4_8, 681 + 205, UNIPHIER_PIN_DRV_1BIT, 684 682 205, UNIPHIER_PIN_PULL_DOWN), 685 683 UNIPHIER_PINCTRL_PIN(220, "ADFLG", UNIPHIER_PIN_IECTRL_NONE, 686 - 206, UNIPHIER_PIN_DRV_4_8, 684 + 206, UNIPHIER_PIN_DRV_1BIT, 687 685 206, UNIPHIER_PIN_PULL_DOWN), 688 686 UNIPHIER_PINCTRL_PIN(221, "CK27AIOF", UNIPHIER_PIN_IECTRL_NONE, 689 - 207, UNIPHIER_PIN_DRV_4_8, 687 + 207, UNIPHIER_PIN_DRV_1BIT, 690 688 207, UNIPHIER_PIN_PULL_DOWN), 691 689 UNIPHIER_PINCTRL_PIN(222, "DACOUT", UNIPHIER_PIN_IECTRL_NONE, 692 - 208, UNIPHIER_PIN_DRV_4_8, 690 + 208, UNIPHIER_PIN_DRV_1BIT, 693 691 208, UNIPHIER_PIN_PULL_DOWN), 694 692 UNIPHIER_PINCTRL_PIN(223, "DAFLG", UNIPHIER_PIN_IECTRL_NONE, 695 - 209, UNIPHIER_PIN_DRV_4_8, 693 + 209, UNIPHIER_PIN_DRV_1BIT, 696 694 209, UNIPHIER_PIN_PULL_DOWN), 697 695 UNIPHIER_PINCTRL_PIN(224, "VBIH", UNIPHIER_PIN_IECTRL_NONE, 698 - 210, UNIPHIER_PIN_DRV_4_8, 696 + 210, UNIPHIER_PIN_DRV_1BIT, 699 697 210, UNIPHIER_PIN_PULL_DOWN), 700 698 UNIPHIER_PINCTRL_PIN(225, "VBIL", UNIPHIER_PIN_IECTRL_NONE, 701 - 211, UNIPHIER_PIN_DRV_4_8, 699 + 211, UNIPHIER_PIN_DRV_1BIT, 702 700 211, UNIPHIER_PIN_PULL_DOWN), 703 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 703 212, UNIPHIER_PIN_PULL_DOWN), 706 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 706 213, UNIPHIER_PIN_PULL_DOWN), 709 707 UNIPHIER_PINCTRL_PIN(228, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE, 710 - 214, UNIPHIER_PIN_DRV_4_8, 708 + 214, UNIPHIER_PIN_DRV_1BIT, 711 709 214, UNIPHIER_PIN_PULL_DOWN), 712 710 UNIPHIER_PINCTRL_PIN(229, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE, 713 - 215, UNIPHIER_PIN_DRV_4_8, 711 + 215, UNIPHIER_PIN_DRV_1BIT, 714 712 215, UNIPHIER_PIN_PULL_DOWN), 715 713 UNIPHIER_PINCTRL_PIN(230, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE, 716 - 216, UNIPHIER_PIN_DRV_4_8, 714 + 216, UNIPHIER_PIN_DRV_1BIT, 717 715 216, UNIPHIER_PIN_PULL_DOWN), 718 716 UNIPHIER_PINCTRL_PIN(231, "AI1DMIX", UNIPHIER_PIN_IECTRL_NONE, 719 - 217, UNIPHIER_PIN_DRV_4_8, 717 + 217, UNIPHIER_PIN_DRV_1BIT, 720 718 217, UNIPHIER_PIN_PULL_DOWN), 721 719 UNIPHIER_PINCTRL_PIN(232, "CK27HD", UNIPHIER_PIN_IECTRL_NONE, 722 - 218, UNIPHIER_PIN_DRV_4_8, 720 + 218, UNIPHIER_PIN_DRV_1BIT, 723 721 218, UNIPHIER_PIN_PULL_DOWN), 724 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 724 219, UNIPHIER_PIN_PULL_DOWN), 727 725 UNIPHIER_PINCTRL_PIN(234, "INTHD", UNIPHIER_PIN_IECTRL_NONE, 728 - 220, UNIPHIER_PIN_DRV_4_8, 726 + 220, UNIPHIER_PIN_DRV_1BIT, 729 727 220, UNIPHIER_PIN_PULL_UP), 730 728 UNIPHIER_PINCTRL_PIN(235, "VO1HDCK", UNIPHIER_PIN_IECTRL_NONE, 731 - 221, UNIPHIER_PIN_DRV_4_8, 729 + 221, UNIPHIER_PIN_DRV_1BIT, 732 730 221, UNIPHIER_PIN_PULL_DOWN), 733 731 UNIPHIER_PINCTRL_PIN(236, "VO1HSYNC", UNIPHIER_PIN_IECTRL_NONE, 734 - 222, UNIPHIER_PIN_DRV_4_8, 732 + 222, UNIPHIER_PIN_DRV_1BIT, 735 733 222, UNIPHIER_PIN_PULL_DOWN), 736 734 UNIPHIER_PINCTRL_PIN(237, "VO1VSYNC", UNIPHIER_PIN_IECTRL_NONE, 737 - 223, UNIPHIER_PIN_DRV_4_8, 735 + 223, UNIPHIER_PIN_DRV_1BIT, 738 736 223, UNIPHIER_PIN_PULL_DOWN), 739 737 UNIPHIER_PINCTRL_PIN(238, "VO1DE", UNIPHIER_PIN_IECTRL_NONE, 740 - 224, UNIPHIER_PIN_DRV_4_8, 738 + 224, UNIPHIER_PIN_DRV_1BIT, 741 739 224, UNIPHIER_PIN_PULL_DOWN), 742 740 UNIPHIER_PINCTRL_PIN(239, "VO1Y0", UNIPHIER_PIN_IECTRL_NONE, 743 - 225, UNIPHIER_PIN_DRV_4_8, 741 + 225, UNIPHIER_PIN_DRV_1BIT, 744 742 225, UNIPHIER_PIN_PULL_DOWN), 745 743 UNIPHIER_PINCTRL_PIN(240, "VO1Y1", UNIPHIER_PIN_IECTRL_NONE, 746 - 226, UNIPHIER_PIN_DRV_4_8, 744 + 226, UNIPHIER_PIN_DRV_1BIT, 747 745 226, UNIPHIER_PIN_PULL_DOWN), 748 746 UNIPHIER_PINCTRL_PIN(241, "VO1Y2", UNIPHIER_PIN_IECTRL_NONE, 749 - 227, UNIPHIER_PIN_DRV_4_8, 747 + 227, UNIPHIER_PIN_DRV_1BIT, 750 748 227, UNIPHIER_PIN_PULL_DOWN), 751 749 UNIPHIER_PINCTRL_PIN(242, "VO1Y3", UNIPHIER_PIN_IECTRL_NONE, 752 - 228, UNIPHIER_PIN_DRV_4_8, 750 + 228, UNIPHIER_PIN_DRV_1BIT, 753 751 228, UNIPHIER_PIN_PULL_DOWN), 754 752 UNIPHIER_PINCTRL_PIN(243, "VO1Y4", UNIPHIER_PIN_IECTRL_NONE, 755 - 229, UNIPHIER_PIN_DRV_4_8, 753 + 229, UNIPHIER_PIN_DRV_1BIT, 756 754 229, UNIPHIER_PIN_PULL_DOWN), 757 755 UNIPHIER_PINCTRL_PIN(244, "VO1Y5", UNIPHIER_PIN_IECTRL_NONE, 758 - 230, UNIPHIER_PIN_DRV_4_8, 756 + 230, UNIPHIER_PIN_DRV_1BIT, 759 757 230, UNIPHIER_PIN_PULL_DOWN), 760 758 UNIPHIER_PINCTRL_PIN(245, "VO1Y6", UNIPHIER_PIN_IECTRL_NONE, 761 - 231, UNIPHIER_PIN_DRV_4_8, 759 + 231, UNIPHIER_PIN_DRV_1BIT, 762 760 231, UNIPHIER_PIN_PULL_DOWN), 763 761 UNIPHIER_PINCTRL_PIN(246, "VO1Y7", UNIPHIER_PIN_IECTRL_NONE, 764 - 232, UNIPHIER_PIN_DRV_4_8, 762 + 232, UNIPHIER_PIN_DRV_1BIT, 765 763 232, UNIPHIER_PIN_PULL_DOWN), 766 764 UNIPHIER_PINCTRL_PIN(247, "VO1Y8", UNIPHIER_PIN_IECTRL_NONE, 767 - 233, UNIPHIER_PIN_DRV_4_8, 765 + 233, UNIPHIER_PIN_DRV_1BIT, 768 766 233, UNIPHIER_PIN_PULL_DOWN), 769 767 UNIPHIER_PINCTRL_PIN(248, "VO1Y9", UNIPHIER_PIN_IECTRL_NONE, 770 - 234, UNIPHIER_PIN_DRV_4_8, 768 + 234, UNIPHIER_PIN_DRV_1BIT, 771 769 234, UNIPHIER_PIN_PULL_DOWN), 772 770 UNIPHIER_PINCTRL_PIN(249, "VO1Y10", UNIPHIER_PIN_IECTRL_NONE, 773 - 235, UNIPHIER_PIN_DRV_4_8, 771 + 235, UNIPHIER_PIN_DRV_1BIT, 774 772 235, UNIPHIER_PIN_PULL_DOWN), 775 773 UNIPHIER_PINCTRL_PIN(250, "VO1Y11", UNIPHIER_PIN_IECTRL_NONE, 776 - 236, UNIPHIER_PIN_DRV_4_8, 774 + 236, UNIPHIER_PIN_DRV_1BIT, 777 775 236, UNIPHIER_PIN_PULL_DOWN), 778 776 UNIPHIER_PINCTRL_PIN(251, "VO1CB0", UNIPHIER_PIN_IECTRL_NONE, 779 - 237, UNIPHIER_PIN_DRV_4_8, 777 + 237, UNIPHIER_PIN_DRV_1BIT, 780 778 237, UNIPHIER_PIN_PULL_DOWN), 781 779 UNIPHIER_PINCTRL_PIN(252, "VO1CB1", UNIPHIER_PIN_IECTRL_NONE, 782 - 238, UNIPHIER_PIN_DRV_4_8, 780 + 238, UNIPHIER_PIN_DRV_1BIT, 783 781 238, UNIPHIER_PIN_PULL_DOWN), 784 782 UNIPHIER_PINCTRL_PIN(253, "VO1CB2", UNIPHIER_PIN_IECTRL_NONE, 785 - 239, UNIPHIER_PIN_DRV_4_8, 783 + 239, UNIPHIER_PIN_DRV_1BIT, 786 784 239, UNIPHIER_PIN_PULL_DOWN), 787 785 UNIPHIER_PINCTRL_PIN(254, "VO1CB3", UNIPHIER_PIN_IECTRL_NONE, 788 - 240, UNIPHIER_PIN_DRV_4_8, 786 + 240, UNIPHIER_PIN_DRV_1BIT, 789 787 240, UNIPHIER_PIN_PULL_DOWN), 790 788 UNIPHIER_PINCTRL_PIN(255, "VO1CB4", UNIPHIER_PIN_IECTRL_NONE, 791 - 241, UNIPHIER_PIN_DRV_4_8, 789 + 241, UNIPHIER_PIN_DRV_1BIT, 792 790 241, UNIPHIER_PIN_PULL_DOWN), 793 791 UNIPHIER_PINCTRL_PIN(256, "VO1CB5", UNIPHIER_PIN_IECTRL_NONE, 794 - 242, UNIPHIER_PIN_DRV_4_8, 792 + 242, UNIPHIER_PIN_DRV_1BIT, 795 793 242, UNIPHIER_PIN_PULL_DOWN), 796 794 UNIPHIER_PINCTRL_PIN(257, "VO1CB6", UNIPHIER_PIN_IECTRL_NONE, 797 - 243, UNIPHIER_PIN_DRV_4_8, 795 + 243, UNIPHIER_PIN_DRV_1BIT, 798 796 243, UNIPHIER_PIN_PULL_DOWN), 799 797 UNIPHIER_PINCTRL_PIN(258, "VO1CB7", UNIPHIER_PIN_IECTRL_NONE, 800 - 244, UNIPHIER_PIN_DRV_4_8, 798 + 244, UNIPHIER_PIN_DRV_1BIT, 801 799 244, UNIPHIER_PIN_PULL_DOWN), 802 800 UNIPHIER_PINCTRL_PIN(259, "VO1CB8", UNIPHIER_PIN_IECTRL_NONE, 803 - 245, UNIPHIER_PIN_DRV_4_8, 801 + 245, UNIPHIER_PIN_DRV_1BIT, 804 802 245, UNIPHIER_PIN_PULL_DOWN), 805 803 UNIPHIER_PINCTRL_PIN(260, "VO1CB9", UNIPHIER_PIN_IECTRL_NONE, 806 - 246, UNIPHIER_PIN_DRV_4_8, 804 + 246, UNIPHIER_PIN_DRV_1BIT, 807 805 246, UNIPHIER_PIN_PULL_DOWN), 808 806 UNIPHIER_PINCTRL_PIN(261, "VO1CB10", UNIPHIER_PIN_IECTRL_NONE, 809 - 247, UNIPHIER_PIN_DRV_4_8, 807 + 247, UNIPHIER_PIN_DRV_1BIT, 810 808 247, UNIPHIER_PIN_PULL_DOWN), 811 809 UNIPHIER_PINCTRL_PIN(262, "VO1CB11", UNIPHIER_PIN_IECTRL_NONE, 812 - 248, UNIPHIER_PIN_DRV_4_8, 810 + 248, UNIPHIER_PIN_DRV_1BIT, 813 811 248, UNIPHIER_PIN_PULL_DOWN), 814 812 UNIPHIER_PINCTRL_PIN(263, "VO1CR0", UNIPHIER_PIN_IECTRL_NONE, 815 - 249, UNIPHIER_PIN_DRV_4_8, 813 + 249, UNIPHIER_PIN_DRV_1BIT, 816 814 249, UNIPHIER_PIN_PULL_DOWN), 817 815 UNIPHIER_PINCTRL_PIN(264, "VO1CR1", UNIPHIER_PIN_IECTRL_NONE, 818 - 250, UNIPHIER_PIN_DRV_4_8, 816 + 250, UNIPHIER_PIN_DRV_1BIT, 819 817 250, UNIPHIER_PIN_PULL_DOWN), 820 818 UNIPHIER_PINCTRL_PIN(265, "VO1CR2", UNIPHIER_PIN_IECTRL_NONE, 821 - 251, UNIPHIER_PIN_DRV_4_8, 819 + 251, UNIPHIER_PIN_DRV_1BIT, 822 820 251, UNIPHIER_PIN_PULL_DOWN), 823 821 UNIPHIER_PINCTRL_PIN(266, "VO1CR3", UNIPHIER_PIN_IECTRL_NONE, 824 - 252, UNIPHIER_PIN_DRV_4_8, 822 + 252, UNIPHIER_PIN_DRV_1BIT, 825 823 252, UNIPHIER_PIN_PULL_DOWN), 826 824 UNIPHIER_PINCTRL_PIN(267, "VO1CR4", UNIPHIER_PIN_IECTRL_NONE, 827 - 253, UNIPHIER_PIN_DRV_4_8, 825 + 253, UNIPHIER_PIN_DRV_1BIT, 828 826 253, UNIPHIER_PIN_PULL_DOWN), 829 827 UNIPHIER_PINCTRL_PIN(268, "VO1CR5", UNIPHIER_PIN_IECTRL_NONE, 830 - 254, UNIPHIER_PIN_DRV_4_8, 828 + 254, UNIPHIER_PIN_DRV_1BIT, 831 829 254, UNIPHIER_PIN_PULL_DOWN), 832 830 UNIPHIER_PINCTRL_PIN(269, "VO1CR6", UNIPHIER_PIN_IECTRL_NONE, 833 - 255, UNIPHIER_PIN_DRV_4_8, 831 + 255, UNIPHIER_PIN_DRV_1BIT, 834 832 255, UNIPHIER_PIN_PULL_DOWN), 835 833 UNIPHIER_PINCTRL_PIN(270, "VO1CR7", UNIPHIER_PIN_IECTRL_NONE, 836 - 256, UNIPHIER_PIN_DRV_4_8, 834 + 256, UNIPHIER_PIN_DRV_1BIT, 837 835 256, UNIPHIER_PIN_PULL_DOWN), 838 836 UNIPHIER_PINCTRL_PIN(271, "VO1CR8", UNIPHIER_PIN_IECTRL_NONE, 839 - 257, UNIPHIER_PIN_DRV_4_8, 837 + 257, UNIPHIER_PIN_DRV_1BIT, 840 838 257, UNIPHIER_PIN_PULL_DOWN), 841 839 UNIPHIER_PINCTRL_PIN(272, "VO1CR9", UNIPHIER_PIN_IECTRL_NONE, 842 - 258, UNIPHIER_PIN_DRV_4_8, 840 + 258, UNIPHIER_PIN_DRV_1BIT, 843 841 258, UNIPHIER_PIN_PULL_DOWN), 844 842 UNIPHIER_PINCTRL_PIN(273, "VO1CR10", UNIPHIER_PIN_IECTRL_NONE, 845 - 259, UNIPHIER_PIN_DRV_4_8, 843 + 259, UNIPHIER_PIN_DRV_1BIT, 846 844 259, UNIPHIER_PIN_PULL_DOWN), 847 845 UNIPHIER_PINCTRL_PIN(274, "VO1CR11", UNIPHIER_PIN_IECTRL_NONE, 848 - 260, UNIPHIER_PIN_DRV_4_8, 846 + 260, UNIPHIER_PIN_DRV_1BIT, 849 847 260, UNIPHIER_PIN_PULL_DOWN), 850 848 UNIPHIER_PINCTRL_PIN(275, "VO1EX0", UNIPHIER_PIN_IECTRL_NONE, 851 - 261, UNIPHIER_PIN_DRV_4_8, 849 + 261, UNIPHIER_PIN_DRV_1BIT, 852 850 261, UNIPHIER_PIN_PULL_DOWN), 853 851 UNIPHIER_PINCTRL_PIN(276, "VO1EX1", UNIPHIER_PIN_IECTRL_NONE, 854 - 262, UNIPHIER_PIN_DRV_4_8, 852 + 262, UNIPHIER_PIN_DRV_1BIT, 855 853 262, UNIPHIER_PIN_PULL_DOWN), 856 854 UNIPHIER_PINCTRL_PIN(277, "VO1EX2", UNIPHIER_PIN_IECTRL_NONE, 857 - 263, UNIPHIER_PIN_DRV_4_8, 855 + 263, UNIPHIER_PIN_DRV_1BIT, 858 856 263, UNIPHIER_PIN_PULL_DOWN), 859 857 UNIPHIER_PINCTRL_PIN(278, "VO1EX3", UNIPHIER_PIN_IECTRL_NONE, 860 - 264, UNIPHIER_PIN_DRV_4_8, 858 + 264, UNIPHIER_PIN_DRV_1BIT, 861 859 264, UNIPHIER_PIN_PULL_DOWN), 862 860 UNIPHIER_PINCTRL_PIN(279, "VEXCKA", UNIPHIER_PIN_IECTRL_NONE, 863 - 265, UNIPHIER_PIN_DRV_4_8, 861 + 265, UNIPHIER_PIN_DRV_1BIT, 864 862 265, UNIPHIER_PIN_PULL_DOWN), 865 863 UNIPHIER_PINCTRL_PIN(280, "VSEL0", UNIPHIER_PIN_IECTRL_NONE, 866 - 266, UNIPHIER_PIN_DRV_4_8, 864 + 266, UNIPHIER_PIN_DRV_1BIT, 867 865 266, UNIPHIER_PIN_PULL_DOWN), 868 866 UNIPHIER_PINCTRL_PIN(281, "VSEL1", UNIPHIER_PIN_IECTRL_NONE, 869 - 267, UNIPHIER_PIN_DRV_4_8, 867 + 267, UNIPHIER_PIN_DRV_1BIT, 870 868 267, UNIPHIER_PIN_PULL_DOWN), 871 869 UNIPHIER_PINCTRL_PIN(282, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE, 872 - 268, UNIPHIER_PIN_DRV_4_8, 870 + 268, UNIPHIER_PIN_DRV_1BIT, 873 871 268, UNIPHIER_PIN_PULL_DOWN), 874 872 UNIPHIER_PINCTRL_PIN(283, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE, 875 - 269, UNIPHIER_PIN_DRV_4_8, 873 + 269, UNIPHIER_PIN_DRV_1BIT, 876 874 269, UNIPHIER_PIN_PULL_DOWN), 877 875 UNIPHIER_PINCTRL_PIN(284, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE, 878 - 270, UNIPHIER_PIN_DRV_4_8, 876 + 270, UNIPHIER_PIN_DRV_1BIT, 879 877 270, UNIPHIER_PIN_PULL_DOWN), 880 878 UNIPHIER_PINCTRL_PIN(285, "AO1D0", UNIPHIER_PIN_IECTRL_NONE, 881 - 271, UNIPHIER_PIN_DRV_4_8, 879 + 271, UNIPHIER_PIN_DRV_1BIT, 882 880 271, UNIPHIER_PIN_PULL_DOWN), 883 881 UNIPHIER_PINCTRL_PIN(286, "AO1D1", UNIPHIER_PIN_IECTRL_NONE, 884 - 272, UNIPHIER_PIN_DRV_4_8, 882 + 272, UNIPHIER_PIN_DRV_1BIT, 885 883 272, UNIPHIER_PIN_PULL_DOWN), 886 884 UNIPHIER_PINCTRL_PIN(287, "AO1D2", UNIPHIER_PIN_IECTRL_NONE, 887 - 273, UNIPHIER_PIN_DRV_4_8, 885 + 273, UNIPHIER_PIN_DRV_1BIT, 888 886 273, UNIPHIER_PIN_PULL_DOWN), 889 887 UNIPHIER_PINCTRL_PIN(288, "AO1D3", UNIPHIER_PIN_IECTRL_NONE, 890 - 274, UNIPHIER_PIN_DRV_4_8, 888 + 274, UNIPHIER_PIN_DRV_1BIT, 891 889 274, UNIPHIER_PIN_PULL_DOWN), 892 890 UNIPHIER_PINCTRL_PIN(289, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE, 893 - 275, UNIPHIER_PIN_DRV_4_8, 891 + 275, UNIPHIER_PIN_DRV_1BIT, 894 892 275, UNIPHIER_PIN_PULL_DOWN), 895 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 895 276, UNIPHIER_PIN_PULL_DOWN), 898 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 898 277, UNIPHIER_PIN_PULL_UP), 901 899 UNIPHIER_PINCTRL_PIN(292, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 902 - 278, UNIPHIER_PIN_DRV_4_8, 900 + 278, UNIPHIER_PIN_DRV_1BIT, 903 901 278, UNIPHIER_PIN_PULL_DOWN), 904 902 UNIPHIER_PINCTRL_PIN(293, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 905 - 279, UNIPHIER_PIN_DRV_4_8, 903 + 279, UNIPHIER_PIN_DRV_1BIT, 906 904 279, UNIPHIER_PIN_PULL_DOWN), 907 905 UNIPHIER_PINCTRL_PIN(294, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 908 - 280, UNIPHIER_PIN_DRV_4_8, 906 + 280, UNIPHIER_PIN_DRV_1BIT, 909 907 280, UNIPHIER_PIN_PULL_DOWN), 910 908 UNIPHIER_PINCTRL_PIN(295, "AO2DMIX", UNIPHIER_PIN_IECTRL_NONE, 911 - 281, UNIPHIER_PIN_DRV_4_8, 909 + 281, UNIPHIER_PIN_DRV_1BIT, 912 910 281, UNIPHIER_PIN_PULL_DOWN), 913 911 UNIPHIER_PINCTRL_PIN(296, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE, 914 - 282, UNIPHIER_PIN_DRV_4_8, 912 + 282, UNIPHIER_PIN_DRV_1BIT, 915 913 282, UNIPHIER_PIN_PULL_DOWN), 916 914 UNIPHIER_PINCTRL_PIN(297, "HTHPD", UNIPHIER_PIN_IECTRL_NONE, 917 - -1, UNIPHIER_PIN_DRV_FIXED_5, 915 + -1, UNIPHIER_PIN_DRV_FIXED5, 918 916 -1, UNIPHIER_PIN_PULL_NONE), 919 917 UNIPHIER_PINCTRL_PIN(298, "HTSCL", UNIPHIER_PIN_IECTRL_NONE, 920 - -1, UNIPHIER_PIN_DRV_FIXED_5, 918 + -1, UNIPHIER_PIN_DRV_FIXED5, 921 919 -1, UNIPHIER_PIN_PULL_NONE), 922 920 UNIPHIER_PINCTRL_PIN(299, "HTSDA", UNIPHIER_PIN_IECTRL_NONE, 923 - -1, UNIPHIER_PIN_DRV_FIXED_5, 921 + -1, UNIPHIER_PIN_DRV_FIXED5, 924 922 -1, UNIPHIER_PIN_PULL_NONE), 925 923 UNIPHIER_PINCTRL_PIN(300, "PORT00", UNIPHIER_PIN_IECTRL_NONE, 926 - 284, UNIPHIER_PIN_DRV_4_8, 924 + 284, UNIPHIER_PIN_DRV_1BIT, 927 925 284, UNIPHIER_PIN_PULL_DOWN), 928 926 UNIPHIER_PINCTRL_PIN(301, "PORT01", UNIPHIER_PIN_IECTRL_NONE, 929 - 285, UNIPHIER_PIN_DRV_4_8, 927 + 285, UNIPHIER_PIN_DRV_1BIT, 930 928 285, UNIPHIER_PIN_PULL_DOWN), 931 929 UNIPHIER_PINCTRL_PIN(302, "PORT02", UNIPHIER_PIN_IECTRL_NONE, 932 - 286, UNIPHIER_PIN_DRV_4_8, 930 + 286, UNIPHIER_PIN_DRV_1BIT, 933 931 286, UNIPHIER_PIN_PULL_DOWN), 934 932 UNIPHIER_PINCTRL_PIN(303, "PORT03", UNIPHIER_PIN_IECTRL_NONE, 935 - 287, UNIPHIER_PIN_DRV_4_8, 933 + 287, UNIPHIER_PIN_DRV_1BIT, 936 934 287, UNIPHIER_PIN_PULL_DOWN), 937 935 UNIPHIER_PINCTRL_PIN(304, "PORT04", UNIPHIER_PIN_IECTRL_NONE, 938 - 288, UNIPHIER_PIN_DRV_4_8, 936 + 288, UNIPHIER_PIN_DRV_1BIT, 939 937 288, UNIPHIER_PIN_PULL_DOWN), 940 938 UNIPHIER_PINCTRL_PIN(305, "PORT05", UNIPHIER_PIN_IECTRL_NONE, 941 - 289, UNIPHIER_PIN_DRV_4_8, 939 + 289, UNIPHIER_PIN_DRV_1BIT, 942 940 289, UNIPHIER_PIN_PULL_DOWN), 943 941 UNIPHIER_PINCTRL_PIN(306, "PORT06", UNIPHIER_PIN_IECTRL_NONE, 944 - 290, UNIPHIER_PIN_DRV_4_8, 942 + 290, UNIPHIER_PIN_DRV_1BIT, 945 943 290, UNIPHIER_PIN_PULL_DOWN), 946 944 UNIPHIER_PINCTRL_PIN(307, "PORT07", UNIPHIER_PIN_IECTRL_NONE, 947 - 291, UNIPHIER_PIN_DRV_4_8, 945 + 291, UNIPHIER_PIN_DRV_1BIT, 948 946 291, UNIPHIER_PIN_PULL_DOWN), 949 947 UNIPHIER_PINCTRL_PIN(308, "PORT10", UNIPHIER_PIN_IECTRL_NONE, 950 - 292, UNIPHIER_PIN_DRV_4_8, 948 + 292, UNIPHIER_PIN_DRV_1BIT, 951 949 292, UNIPHIER_PIN_PULL_DOWN), 952 950 UNIPHIER_PINCTRL_PIN(309, "PORT11", UNIPHIER_PIN_IECTRL_NONE, 953 - 293, UNIPHIER_PIN_DRV_4_8, 951 + 293, UNIPHIER_PIN_DRV_1BIT, 954 952 293, UNIPHIER_PIN_PULL_DOWN), 955 953 UNIPHIER_PINCTRL_PIN(310, "PORT12", UNIPHIER_PIN_IECTRL_NONE, 956 - 294, UNIPHIER_PIN_DRV_4_8, 954 + 294, UNIPHIER_PIN_DRV_1BIT, 957 955 294, UNIPHIER_PIN_PULL_DOWN), 958 956 UNIPHIER_PINCTRL_PIN(311, "PORT13", UNIPHIER_PIN_IECTRL_NONE, 959 - 295, UNIPHIER_PIN_DRV_4_8, 957 + 295, UNIPHIER_PIN_DRV_1BIT, 960 958 295, UNIPHIER_PIN_PULL_DOWN), 961 959 UNIPHIER_PINCTRL_PIN(312, "PORT14", UNIPHIER_PIN_IECTRL_NONE, 962 - 296, UNIPHIER_PIN_DRV_4_8, 960 + 296, UNIPHIER_PIN_DRV_1BIT, 963 961 296, UNIPHIER_PIN_PULL_DOWN), 964 962 UNIPHIER_PINCTRL_PIN(313, "PORT15", UNIPHIER_PIN_IECTRL_NONE, 965 - 297, UNIPHIER_PIN_DRV_4_8, 963 + 297, UNIPHIER_PIN_DRV_1BIT, 966 964 297, UNIPHIER_PIN_PULL_DOWN), 967 965 UNIPHIER_PINCTRL_PIN(314, "PORT16", UNIPHIER_PIN_IECTRL_NONE, 968 - 298, UNIPHIER_PIN_DRV_4_8, 966 + 298, UNIPHIER_PIN_DRV_1BIT, 969 967 298, UNIPHIER_PIN_PULL_DOWN), 970 968 UNIPHIER_PINCTRL_PIN(315, "PORT17", UNIPHIER_PIN_IECTRL_NONE, 971 - 299, UNIPHIER_PIN_DRV_4_8, 969 + 299, UNIPHIER_PIN_DRV_1BIT, 972 970 299, UNIPHIER_PIN_PULL_DOWN), 973 971 UNIPHIER_PINCTRL_PIN(316, "PORT20", UNIPHIER_PIN_IECTRL_NONE, 974 - 300, UNIPHIER_PIN_DRV_4_8, 972 + 300, UNIPHIER_PIN_DRV_1BIT, 975 973 300, UNIPHIER_PIN_PULL_DOWN), 976 974 UNIPHIER_PINCTRL_PIN(317, "PORT21", UNIPHIER_PIN_IECTRL_NONE, 977 - 301, UNIPHIER_PIN_DRV_4_8, 975 + 301, UNIPHIER_PIN_DRV_1BIT, 978 976 301, UNIPHIER_PIN_PULL_DOWN), 979 977 UNIPHIER_PINCTRL_PIN(318, "PORT22", UNIPHIER_PIN_IECTRL_NONE, 980 - 302, UNIPHIER_PIN_DRV_4_8, 978 + 302, UNIPHIER_PIN_DRV_1BIT, 981 979 302, UNIPHIER_PIN_PULL_UP), 982 980 UNIPHIER_PINCTRL_PIN(319, "SD1DAT0", UNIPHIER_PIN_IECTRL_NONE, 983 - 303, UNIPHIER_PIN_DRV_4_8, 981 + 303, UNIPHIER_PIN_DRV_1BIT, 984 982 303, UNIPHIER_PIN_PULL_UP), 985 983 UNIPHIER_PINCTRL_PIN(320, "SD1DAT1", UNIPHIER_PIN_IECTRL_NONE, 986 - 304, UNIPHIER_PIN_DRV_4_8, 984 + 304, UNIPHIER_PIN_DRV_1BIT, 987 985 304, UNIPHIER_PIN_PULL_UP), 988 986 UNIPHIER_PINCTRL_PIN(321, "SD1DAT2", UNIPHIER_PIN_IECTRL_NONE, 989 - 305, UNIPHIER_PIN_DRV_4_8, 987 + 305, UNIPHIER_PIN_DRV_1BIT, 990 988 305, UNIPHIER_PIN_PULL_UP), 991 989 UNIPHIER_PINCTRL_PIN(322, "SD1DAT3", UNIPHIER_PIN_IECTRL_NONE, 992 - 306, UNIPHIER_PIN_DRV_4_8, 990 + 306, UNIPHIER_PIN_DRV_1BIT, 993 991 306, UNIPHIER_PIN_PULL_UP), 994 992 UNIPHIER_PINCTRL_PIN(323, "SD1CMD", UNIPHIER_PIN_IECTRL_NONE, 995 - 307, UNIPHIER_PIN_DRV_4_8, 993 + 307, UNIPHIER_PIN_DRV_1BIT, 996 994 307, UNIPHIER_PIN_PULL_UP), 997 995 UNIPHIER_PINCTRL_PIN(324, "SD1CLK", UNIPHIER_PIN_IECTRL_NONE, 998 - 308, UNIPHIER_PIN_DRV_4_8, 996 + 308, UNIPHIER_PIN_DRV_1BIT, 999 997 308, UNIPHIER_PIN_PULL_UP), 1000 998 UNIPHIER_PINCTRL_PIN(325, "SD1CD", UNIPHIER_PIN_IECTRL_NONE, 1001 - 309, UNIPHIER_PIN_DRV_4_8, 999 + 309, UNIPHIER_PIN_DRV_1BIT, 1002 1000 309, UNIPHIER_PIN_PULL_UP), 1003 1001 UNIPHIER_PINCTRL_PIN(326, "SD1WP", UNIPHIER_PIN_IECTRL_NONE, 1004 - 310, UNIPHIER_PIN_DRV_4_8, 1002 + 310, UNIPHIER_PIN_DRV_1BIT, 1005 1003 310, UNIPHIER_PIN_PULL_UP), 1006 1004 UNIPHIER_PINCTRL_PIN(327, "SD1VTCG", UNIPHIER_PIN_IECTRL_NONE, 1007 - 311, UNIPHIER_PIN_DRV_4_8, 1005 + 311, UNIPHIER_PIN_DRV_1BIT, 1008 1006 311, UNIPHIER_PIN_PULL_UP), 1009 1007 UNIPHIER_PINCTRL_PIN(328, "DMDISO", UNIPHIER_PIN_IECTRL_NONE, 1010 - 312, UNIPHIER_PIN_DRV_NONE, 1008 + -1, UNIPHIER_PIN_DRV_NONE, 1011 1009 312, UNIPHIER_PIN_PULL_DOWN), 1012 1010 }; 1013 1011 1014 1012 static const unsigned emmc_pins[] = {40, 41, 42, 43, 51, 52, 53}; 1015 - static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 1013 + static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 1016 1014 static const unsigned emmc_dat8_pins[] = {44, 45, 46, 47}; 1017 - static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 1015 + static const int emmc_dat8_muxvals[] = {1, 1, 1, 1}; 1016 + static 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}; 1019 + static 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}; 1021 + static const unsigned ether_rgmii_pins[] = {160, 161, 162, 163, 164, 165, 167, 1022 + 168, 169, 170, 171, 172, 176, 177, 1023 + 178, 179}; 1024 + static const int ether_rgmii_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1025 + 0, 0, 0, 0}; 1026 + static const unsigned ether_rmii_pins[] = {160, 161, 162, 165, 168, 169, 172, 1027 + 173, 176, 177, 178, 179}; 1028 + static const int ether_rmii_muxvals[] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 1029 + static const unsigned ether_rmiib_pins[] = {161, 162, 165, 167, 168, 169, 172, 1030 + 173, 176, 177, 178, 179}; 1031 + static const int ether_rmiib_muxvals[] = {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}; 1018 1032 static const unsigned i2c0_pins[] = {142, 143}; 1019 - static const unsigned i2c0_muxvals[] = {0, 0}; 1033 + static const int i2c0_muxvals[] = {0, 0}; 1020 1034 static const unsigned i2c1_pins[] = {144, 145}; 1021 - static const unsigned i2c1_muxvals[] = {0, 0}; 1035 + static const int i2c1_muxvals[] = {0, 0}; 1022 1036 static const unsigned i2c2_pins[] = {146, 147}; 1023 - static const unsigned i2c2_muxvals[] = {0, 0}; 1037 + static const int i2c2_muxvals[] = {0, 0}; 1024 1038 static const unsigned i2c3_pins[] = {148, 149}; 1025 - static const unsigned i2c3_muxvals[] = {0, 0}; 1039 + static const int i2c3_muxvals[] = {0, 0}; 1026 1040 static const unsigned i2c6_pins[] = {308, 309}; 1027 - static const unsigned i2c6_muxvals[] = {6, 6}; 1041 + static const int i2c6_muxvals[] = {6, 6}; 1028 1042 static const unsigned nand_pins[] = {40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 1029 1043 50, 51, 52, 53, 54}; 1030 - static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1031 - 0, 0}; 1044 + static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 1032 1045 static const unsigned nand_cs1_pins[] = {131, 132}; 1033 - static const unsigned nand_cs1_muxvals[] = {1, 1}; 1046 + static const int nand_cs1_muxvals[] = {1, 1}; 1034 1047 static const unsigned sd_pins[] = {150, 151, 152, 153, 154, 155, 156, 157, 158}; 1035 - static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 1048 + static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 1036 1049 static const unsigned sd1_pins[] = {319, 320, 321, 322, 323, 324, 325, 326, 1037 1050 327}; 1038 - static const unsigned sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 1051 + static const int sd1_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 1052 + static const unsigned system_bus_pins[] = {25, 26, 27, 28, 29, 30, 31, 32, 33, 1053 + 34, 35, 36, 37, 38}; 1054 + static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1055 + 0}; 1056 + static const unsigned system_bus_cs0_pins[] = {318}; 1057 + static const int system_bus_cs0_muxvals[] = {5}; 1058 + static const unsigned system_bus_cs1_pins[] = {24}; 1059 + static const int system_bus_cs1_muxvals[] = {0}; 1060 + static const unsigned system_bus_cs2_pins[] = {315}; 1061 + static const int system_bus_cs2_muxvals[] = {5}; 1062 + static const unsigned system_bus_cs3_pins[] = {313}; 1063 + static const int system_bus_cs3_muxvals[] = {5}; 1064 + static const unsigned system_bus_cs4_pins[] = {305}; 1065 + static const int system_bus_cs4_muxvals[] = {5}; 1066 + static const unsigned system_bus_cs5_pins[] = {303}; 1067 + static const int system_bus_cs5_muxvals[] = {6}; 1068 + static const unsigned system_bus_cs6_pins[] = {307}; 1069 + static const int system_bus_cs6_muxvals[] = {6}; 1070 + static const unsigned system_bus_cs7_pins[] = {312}; 1071 + static const int system_bus_cs7_muxvals[] = {6}; 1039 1072 static const unsigned uart0_pins[] = {127, 128}; 1040 - static const unsigned uart0_muxvals[] = {0, 0}; 1073 + static const int uart0_muxvals[] = {0, 0}; 1041 1074 static const unsigned uart1_pins[] = {129, 130}; 1042 - static const unsigned uart1_muxvals[] = {0, 0}; 1075 + static const int uart1_muxvals[] = {0, 0}; 1043 1076 static const unsigned uart2_pins[] = {131, 132}; 1044 - static const unsigned uart2_muxvals[] = {0, 0}; 1077 + static const int uart2_muxvals[] = {0, 0}; 1045 1078 static const unsigned uart3_pins[] = {88, 89}; 1046 - static const unsigned uart3_muxvals[] = {2, 2}; 1079 + static const int uart3_muxvals[] = {2, 2}; 1047 1080 static const unsigned usb0_pins[] = {180, 181}; 1048 - static const unsigned usb0_muxvals[] = {0, 0}; 1081 + static const int usb0_muxvals[] = {0, 0}; 1049 1082 static const unsigned usb1_pins[] = {182, 183}; 1050 - static const unsigned usb1_muxvals[] = {0, 0}; 1083 + static const int usb1_muxvals[] = {0, 0}; 1051 1084 static const unsigned usb2_pins[] = {184, 185}; 1052 - static const unsigned usb2_muxvals[] = {0, 0}; 1085 + static const int usb2_muxvals[] = {0, 0}; 1053 1086 static const unsigned usb3_pins[] = {186, 187}; 1054 - static const unsigned usb3_muxvals[] = {0, 0}; 1087 + static const int usb3_muxvals[] = {0, 0}; 1055 1088 static const unsigned port_range0_pins[] = { 1056 1089 300, 301, 302, 303, 304, 305, 306, 307, /* PORT0x */ 1057 1090 308, 309, 310, 311, 312, 313, 314, 315, /* PORT1x */ ··· 1102 1069 76, 77, 78, 79, 80, 81, 82, 83, /* PORT13x */ 1103 1070 84, 85, 86, 87, 88, 89, 90, 91, /* PORT14x */ 1104 1071 }; 1105 - static const unsigned port_range0_muxvals[] = { 1072 + static const int port_range0_muxvals[] = { 1106 1073 7, 7, 7, 7, 7, 7, 7, 7, /* PORT0x */ 1107 1074 7, 7, 7, 7, 7, 7, 7, 7, /* PORT1x */ 1108 1075 7, 7, 7, 7, 7, 7, 7, 7, /* PORT2x */ ··· 1135 1102 251, 252, 261, 262, 263, 264, 273, 274, /* PORT29x */ 1136 1103 31, 32, 33, 34, 35, 36, 37, 38, /* PORT30x */ 1137 1104 }; 1138 - static const unsigned port_range1_muxvals[] = { 1105 + static const int port_range1_muxvals[] = { 1139 1106 7, 7, 7, /* PORT175-177 */ 1140 1107 7, 7, 7, 7, 7, 7, 7, 7, /* PORT18x */ 1141 1108 7, 7, 7, 7, 7, 7, 7, 7, /* PORT19x */ ··· 1156 1123 234, 186, 99, 100, 101, 102, 184, 301, /* XIRQ8-15 */ 1157 1124 302, 303, 304, 305, 306, /* XIRQ16-20 */ 1158 1125 }; 1159 - static const unsigned xirq_muxvals[] = { 1126 + static const int xirq_muxvals[] = { 1160 1127 7, 7, 7, 7, 7, 7, 7, 7, /* XIRQ0-7 */ 1161 1128 7, 7, 7, 7, 7, 7, 2, 2, /* XIRQ8-15 */ 1162 1129 2, 2, 2, 2, 2, /* XIRQ16-20 */ ··· 1164 1131 static const unsigned xirq_alternatives_pins[] = { 1165 1132 184, 310, 316, 1166 1133 }; 1167 - static const unsigned xirq_alternatives_muxvals[] = { 1134 + static const int xirq_alternatives_muxvals[] = { 1168 1135 2, 2, 2, 1169 1136 }; 1170 1137 1171 - static const struct uniphier_pinctrl_group ph1_pro4_groups[] = { 1138 + static const struct uniphier_pinctrl_group uniphier_pro4_groups[] = { 1172 1139 UNIPHIER_PINCTRL_GROUP(emmc), 1173 1140 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 1141 + UNIPHIER_PINCTRL_GROUP(ether_mii), 1142 + UNIPHIER_PINCTRL_GROUP(ether_rgmii), 1143 + UNIPHIER_PINCTRL_GROUP(ether_rmii), 1144 + UNIPHIER_PINCTRL_GROUP(ether_rmiib), 1174 1145 UNIPHIER_PINCTRL_GROUP(i2c0), 1175 1146 UNIPHIER_PINCTRL_GROUP(i2c1), 1176 1147 UNIPHIER_PINCTRL_GROUP(i2c2), ··· 1184 1147 UNIPHIER_PINCTRL_GROUP(nand_cs1), 1185 1148 UNIPHIER_PINCTRL_GROUP(sd), 1186 1149 UNIPHIER_PINCTRL_GROUP(sd1), 1150 + UNIPHIER_PINCTRL_GROUP(system_bus), 1151 + UNIPHIER_PINCTRL_GROUP(system_bus_cs0), 1152 + UNIPHIER_PINCTRL_GROUP(system_bus_cs1), 1153 + UNIPHIER_PINCTRL_GROUP(system_bus_cs2), 1154 + UNIPHIER_PINCTRL_GROUP(system_bus_cs3), 1155 + UNIPHIER_PINCTRL_GROUP(system_bus_cs4), 1156 + UNIPHIER_PINCTRL_GROUP(system_bus_cs5), 1157 + UNIPHIER_PINCTRL_GROUP(system_bus_cs6), 1158 + UNIPHIER_PINCTRL_GROUP(system_bus_cs7), 1187 1159 UNIPHIER_PINCTRL_GROUP(uart0), 1188 1160 UNIPHIER_PINCTRL_GROUP(uart1), 1189 1161 UNIPHIER_PINCTRL_GROUP(uart2), ··· 1459 1413 }; 1460 1414 1461 1415 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 1416 + static const char * const ether_mii_groups[] = {"ether_mii"}; 1417 + static const char * const ether_rgmii_groups[] = {"ether_rgmii"}; 1418 + static const char * const ether_rmii_groups[] = {"ether_rgmii", "ether_rgmiib"}; 1462 1419 static const char * const i2c0_groups[] = {"i2c0"}; 1463 1420 static const char * const i2c1_groups[] = {"i2c1"}; 1464 1421 static const char * const i2c2_groups[] = {"i2c2"}; ··· 1470 1421 static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1471 1422 static const char * const sd_groups[] = {"sd"}; 1472 1423 static const char * const sd1_groups[] = {"sd1"}; 1424 + static const char * const system_bus_groups[] = {"system_bus", 1425 + "system_bus_cs0", 1426 + "system_bus_cs1", 1427 + "system_bus_cs2", 1428 + "system_bus_cs3", 1429 + "system_bus_cs4", 1430 + "system_bus_cs5", 1431 + "system_bus_cs6", 1432 + "system_bus_cs7"}; 1473 1433 static const char * const uart0_groups[] = {"uart0"}; 1474 1434 static const char * const uart1_groups[] = {"uart1"}; 1475 1435 static const char * const uart2_groups[] = {"uart2"}; ··· 1557 1499 "xirq14b", "xirq17b", "xirq18b", 1558 1500 }; 1559 1501 1560 - static const struct uniphier_pinmux_function ph1_pro4_functions[] = { 1502 + static const struct uniphier_pinmux_function uniphier_pro4_functions[] = { 1561 1503 UNIPHIER_PINMUX_FUNCTION(emmc), 1504 + UNIPHIER_PINMUX_FUNCTION(ether_mii), 1505 + UNIPHIER_PINMUX_FUNCTION(ether_rgmii), 1506 + UNIPHIER_PINMUX_FUNCTION(ether_rmii), 1562 1507 UNIPHIER_PINMUX_FUNCTION(i2c0), 1563 1508 UNIPHIER_PINMUX_FUNCTION(i2c1), 1564 1509 UNIPHIER_PINMUX_FUNCTION(i2c2), ··· 1570 1509 UNIPHIER_PINMUX_FUNCTION(nand), 1571 1510 UNIPHIER_PINMUX_FUNCTION(sd), 1572 1511 UNIPHIER_PINMUX_FUNCTION(sd1), 1512 + UNIPHIER_PINMUX_FUNCTION(system_bus), 1573 1513 UNIPHIER_PINMUX_FUNCTION(uart0), 1574 1514 UNIPHIER_PINMUX_FUNCTION(uart1), 1575 1515 UNIPHIER_PINMUX_FUNCTION(uart2), ··· 1583 1521 UNIPHIER_PINMUX_FUNCTION(xirq), 1584 1522 }; 1585 1523 1586 - static struct uniphier_pinctrl_socdata ph1_pro4_pindata = { 1587 - .groups = ph1_pro4_groups, 1588 - .groups_count = ARRAY_SIZE(ph1_pro4_groups), 1589 - .functions = ph1_pro4_functions, 1590 - .functions_count = ARRAY_SIZE(ph1_pro4_functions), 1591 - .mux_bits = 4, 1592 - .reg_stride = 8, 1593 - .load_pinctrl = true, 1524 + static struct uniphier_pinctrl_socdata uniphier_pro4_pindata = { 1525 + .pins = uniphier_pro4_pins, 1526 + .npins = ARRAY_SIZE(uniphier_pro4_pins), 1527 + .groups = uniphier_pro4_groups, 1528 + .groups_count = ARRAY_SIZE(uniphier_pro4_groups), 1529 + .functions = uniphier_pro4_functions, 1530 + .functions_count = ARRAY_SIZE(uniphier_pro4_functions), 1531 + .caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE, 1594 1532 }; 1595 1533 1596 - static struct pinctrl_desc ph1_pro4_pinctrl_desc = { 1597 - .name = DRIVER_NAME, 1598 - .pins = ph1_pro4_pins, 1599 - .npins = ARRAY_SIZE(ph1_pro4_pins), 1600 - .owner = THIS_MODULE, 1601 - }; 1602 - 1603 - static int ph1_pro4_pinctrl_probe(struct platform_device *pdev) 1534 + static int uniphier_pro4_pinctrl_probe(struct platform_device *pdev) 1604 1535 { 1605 - return uniphier_pinctrl_probe(pdev, &ph1_pro4_pinctrl_desc, 1606 - &ph1_pro4_pindata); 1536 + return uniphier_pinctrl_probe(pdev, &uniphier_pro4_pindata); 1607 1537 } 1608 1538 1609 - static const struct of_device_id ph1_pro4_pinctrl_match[] = { 1539 + static const struct of_device_id uniphier_pro4_pinctrl_match[] = { 1540 + { .compatible = "socionext,uniphier-pro4-pinctrl" }, 1610 1541 { .compatible = "socionext,ph1-pro4-pinctrl" }, 1611 1542 { /* sentinel */ } 1612 1543 }; 1613 - MODULE_DEVICE_TABLE(of, ph1_pro4_pinctrl_match); 1544 + MODULE_DEVICE_TABLE(of, uniphier_pro4_pinctrl_match); 1614 1545 1615 - static struct platform_driver ph1_pro4_pinctrl_driver = { 1616 - .probe = ph1_pro4_pinctrl_probe, 1546 + static struct platform_driver uniphier_pro4_pinctrl_driver = { 1547 + .probe = uniphier_pro4_pinctrl_probe, 1617 1548 .driver = { 1618 - .name = DRIVER_NAME, 1619 - .of_match_table = ph1_pro4_pinctrl_match, 1549 + .name = "uniphier-pro4-pinctrl", 1550 + .of_match_table = uniphier_pro4_pinctrl_match, 1620 1551 }, 1621 1552 }; 1622 - module_platform_driver(ph1_pro4_pinctrl_driver); 1553 + module_platform_driver(uniphier_pro4_pinctrl_driver); 1623 1554 1624 1555 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1625 1556 MODULE_DESCRIPTION("UniPhier PH1-Pro4 pinctrl driver");
+341 -312
drivers/pinctrl/uniphier/pinctrl-uniphier-pro5.c
··· 19 19 20 20 #include "pinctrl-uniphier.h" 21 21 22 - #define DRIVER_NAME "ph1-pro5-pinctrl" 23 - 24 - static const struct pinctrl_pin_desc ph1_pro5_pins[] = { 22 + static const struct pinctrl_pin_desc uniphier_pro5_pins[] = { 25 23 UNIPHIER_PINCTRL_PIN(0, "AEXCKA1", 0, 26 - 0, UNIPHIER_PIN_DRV_4_8, 24 + 0, UNIPHIER_PIN_DRV_1BIT, 27 25 0, UNIPHIER_PIN_PULL_DOWN), 28 26 UNIPHIER_PINCTRL_PIN(1, "AEXCKA2", 0, 29 - 1, UNIPHIER_PIN_DRV_4_8, 27 + 1, UNIPHIER_PIN_DRV_1BIT, 30 28 1, UNIPHIER_PIN_PULL_DOWN), 31 29 UNIPHIER_PINCTRL_PIN(2, "CK27EXI", 0, 32 - 2, UNIPHIER_PIN_DRV_4_8, 30 + 2, UNIPHIER_PIN_DRV_1BIT, 33 31 2, UNIPHIER_PIN_PULL_DOWN), 34 32 UNIPHIER_PINCTRL_PIN(3, "CK54EXI", 0, 35 - 3, UNIPHIER_PIN_DRV_4_8, 33 + 3, UNIPHIER_PIN_DRV_1BIT, 36 34 3, UNIPHIER_PIN_PULL_DOWN), 37 35 UNIPHIER_PINCTRL_PIN(4, "ED0", UNIPHIER_PIN_IECTRL_NONE, 38 - 4, UNIPHIER_PIN_DRV_4_8, 36 + 4, UNIPHIER_PIN_DRV_1BIT, 39 37 4, UNIPHIER_PIN_PULL_DOWN), 40 38 UNIPHIER_PINCTRL_PIN(5, "ED1", UNIPHIER_PIN_IECTRL_NONE, 41 - 5, UNIPHIER_PIN_DRV_4_8, 39 + 5, UNIPHIER_PIN_DRV_1BIT, 42 40 5, UNIPHIER_PIN_PULL_DOWN), 43 41 UNIPHIER_PINCTRL_PIN(6, "ED2", UNIPHIER_PIN_IECTRL_NONE, 44 - 6, UNIPHIER_PIN_DRV_4_8, 42 + 6, UNIPHIER_PIN_DRV_1BIT, 45 43 6, UNIPHIER_PIN_PULL_DOWN), 46 44 UNIPHIER_PINCTRL_PIN(7, "ED3", UNIPHIER_PIN_IECTRL_NONE, 47 - 7, UNIPHIER_PIN_DRV_4_8, 45 + 7, UNIPHIER_PIN_DRV_1BIT, 48 46 7, UNIPHIER_PIN_PULL_DOWN), 49 47 UNIPHIER_PINCTRL_PIN(8, "ED4", UNIPHIER_PIN_IECTRL_NONE, 50 - 8, UNIPHIER_PIN_DRV_4_8, 48 + 8, UNIPHIER_PIN_DRV_1BIT, 51 49 8, UNIPHIER_PIN_PULL_DOWN), 52 50 UNIPHIER_PINCTRL_PIN(9, "ED5", UNIPHIER_PIN_IECTRL_NONE, 53 - 9, UNIPHIER_PIN_DRV_4_8, 51 + 9, UNIPHIER_PIN_DRV_1BIT, 54 52 9, UNIPHIER_PIN_PULL_DOWN), 55 53 UNIPHIER_PINCTRL_PIN(10, "ED6", UNIPHIER_PIN_IECTRL_NONE, 56 - 10, UNIPHIER_PIN_DRV_4_8, 54 + 10, UNIPHIER_PIN_DRV_1BIT, 57 55 10, UNIPHIER_PIN_PULL_DOWN), 58 56 UNIPHIER_PINCTRL_PIN(11, "ED7", UNIPHIER_PIN_IECTRL_NONE, 59 - 11, UNIPHIER_PIN_DRV_4_8, 57 + 11, UNIPHIER_PIN_DRV_1BIT, 60 58 11, UNIPHIER_PIN_PULL_DOWN), 61 59 UNIPHIER_PINCTRL_PIN(12, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 62 - 12, UNIPHIER_PIN_DRV_4_8, 60 + 12, UNIPHIER_PIN_DRV_1BIT, 63 61 12, UNIPHIER_PIN_PULL_UP), 64 62 UNIPHIER_PINCTRL_PIN(13, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 65 - 13, UNIPHIER_PIN_DRV_4_8, 63 + 13, UNIPHIER_PIN_DRV_1BIT, 66 64 13, UNIPHIER_PIN_PULL_UP), 67 65 UNIPHIER_PINCTRL_PIN(14, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 68 - 14, UNIPHIER_PIN_DRV_4_8, 66 + 14, UNIPHIER_PIN_DRV_1BIT, 69 67 14, UNIPHIER_PIN_PULL_UP), 70 68 UNIPHIER_PINCTRL_PIN(15, "ES0", UNIPHIER_PIN_IECTRL_NONE, 71 - 15, UNIPHIER_PIN_DRV_4_8, 69 + 15, UNIPHIER_PIN_DRV_1BIT, 72 70 15, UNIPHIER_PIN_PULL_UP), 73 71 UNIPHIER_PINCTRL_PIN(16, "ES1", UNIPHIER_PIN_IECTRL_NONE, 74 - 16, UNIPHIER_PIN_DRV_4_8, 72 + 16, UNIPHIER_PIN_DRV_1BIT, 75 73 16, UNIPHIER_PIN_PULL_UP), 76 74 UNIPHIER_PINCTRL_PIN(17, "ES2", UNIPHIER_PIN_IECTRL_NONE, 77 - 17, UNIPHIER_PIN_DRV_4_8, 75 + 17, UNIPHIER_PIN_DRV_1BIT, 78 76 17, UNIPHIER_PIN_PULL_UP), 79 77 UNIPHIER_PINCTRL_PIN(18, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 80 - 18, UNIPHIER_PIN_DRV_4_8, 78 + 18, UNIPHIER_PIN_DRV_1BIT, 81 79 18, UNIPHIER_PIN_PULL_UP), 82 80 UNIPHIER_PINCTRL_PIN(19, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 83 - 19, UNIPHIER_PIN_DRV_4_8, 81 + 19, UNIPHIER_PIN_DRV_1BIT, 84 82 19, UNIPHIER_PIN_PULL_UP), 85 83 UNIPHIER_PINCTRL_PIN(20, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 86 - 20, UNIPHIER_PIN_DRV_4_8, 84 + 20, UNIPHIER_PIN_DRV_1BIT, 87 85 20, UNIPHIER_PIN_PULL_UP), 88 86 UNIPHIER_PINCTRL_PIN(21, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 89 - 21, UNIPHIER_PIN_DRV_4_8, 87 + 21, UNIPHIER_PIN_DRV_1BIT, 90 88 21, UNIPHIER_PIN_PULL_DOWN), 91 89 UNIPHIER_PINCTRL_PIN(22, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 92 - 22, UNIPHIER_PIN_DRV_4_8, 90 + 22, UNIPHIER_PIN_DRV_1BIT, 93 91 22, UNIPHIER_PIN_PULL_DOWN), 94 92 UNIPHIER_PINCTRL_PIN(23, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 95 - 23, UNIPHIER_PIN_DRV_4_8, 93 + 23, UNIPHIER_PIN_DRV_1BIT, 96 94 23, UNIPHIER_PIN_PULL_DOWN), 97 95 UNIPHIER_PINCTRL_PIN(24, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 98 - 24, UNIPHIER_PIN_DRV_4_8, 96 + 24, UNIPHIER_PIN_DRV_1BIT, 99 97 24, UNIPHIER_PIN_PULL_UP), 100 98 UNIPHIER_PINCTRL_PIN(25, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE, 101 - 25, UNIPHIER_PIN_DRV_4_8, 99 + 25, UNIPHIER_PIN_DRV_1BIT, 102 100 25, UNIPHIER_PIN_PULL_UP), 103 101 UNIPHIER_PINCTRL_PIN(26, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE, 104 - 26, UNIPHIER_PIN_DRV_4_8, 102 + 26, UNIPHIER_PIN_DRV_1BIT, 105 103 26, UNIPHIER_PIN_PULL_UP), 106 104 UNIPHIER_PINCTRL_PIN(27, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE, 107 - 27, UNIPHIER_PIN_DRV_4_8, 105 + 27, UNIPHIER_PIN_DRV_1BIT, 108 106 27, UNIPHIER_PIN_PULL_UP), 109 107 UNIPHIER_PINCTRL_PIN(28, "NFD0", UNIPHIER_PIN_IECTRL_NONE, 110 - 28, UNIPHIER_PIN_DRV_4_8, 108 + 28, UNIPHIER_PIN_DRV_1BIT, 111 109 28, UNIPHIER_PIN_PULL_UP), 112 110 UNIPHIER_PINCTRL_PIN(29, "NFD1", UNIPHIER_PIN_IECTRL_NONE, 113 - 29, UNIPHIER_PIN_DRV_4_8, 111 + 29, UNIPHIER_PIN_DRV_1BIT, 114 112 29, UNIPHIER_PIN_PULL_UP), 115 113 UNIPHIER_PINCTRL_PIN(30, "NFD2", UNIPHIER_PIN_IECTRL_NONE, 116 - 30, UNIPHIER_PIN_DRV_4_8, 114 + 30, UNIPHIER_PIN_DRV_1BIT, 117 115 30, UNIPHIER_PIN_PULL_UP), 118 116 UNIPHIER_PINCTRL_PIN(31, "NFD3", UNIPHIER_PIN_IECTRL_NONE, 119 - 31, UNIPHIER_PIN_DRV_4_8, 117 + 31, UNIPHIER_PIN_DRV_1BIT, 120 118 31, UNIPHIER_PIN_PULL_UP), 121 119 UNIPHIER_PINCTRL_PIN(32, "NFD4", UNIPHIER_PIN_IECTRL_NONE, 122 - 32, UNIPHIER_PIN_DRV_4_8, 120 + 32, UNIPHIER_PIN_DRV_1BIT, 123 121 32, UNIPHIER_PIN_PULL_UP), 124 122 UNIPHIER_PINCTRL_PIN(33, "NFD5", UNIPHIER_PIN_IECTRL_NONE, 125 - 33, UNIPHIER_PIN_DRV_4_8, 123 + 33, UNIPHIER_PIN_DRV_1BIT, 126 124 33, UNIPHIER_PIN_PULL_UP), 127 125 UNIPHIER_PINCTRL_PIN(34, "NFD6", UNIPHIER_PIN_IECTRL_NONE, 128 - 34, UNIPHIER_PIN_DRV_4_8, 126 + 34, UNIPHIER_PIN_DRV_1BIT, 129 127 34, UNIPHIER_PIN_PULL_UP), 130 128 UNIPHIER_PINCTRL_PIN(35, "NFD7", UNIPHIER_PIN_IECTRL_NONE, 131 - 35, UNIPHIER_PIN_DRV_4_8, 129 + 35, UNIPHIER_PIN_DRV_1BIT, 132 130 35, UNIPHIER_PIN_PULL_UP), 133 131 UNIPHIER_PINCTRL_PIN(36, "XERST", UNIPHIER_PIN_IECTRL_NONE, 134 - 36, UNIPHIER_PIN_DRV_4_8, 132 + 36, UNIPHIER_PIN_DRV_1BIT, 135 133 36, UNIPHIER_PIN_PULL_UP), 136 134 UNIPHIER_PINCTRL_PIN(37, "MMCCLK", UNIPHIER_PIN_IECTRL_NONE, 137 - 37, UNIPHIER_PIN_DRV_4_8, 135 + 37, UNIPHIER_PIN_DRV_1BIT, 138 136 37, UNIPHIER_PIN_PULL_UP), 139 137 UNIPHIER_PINCTRL_PIN(38, "MMCCMD", UNIPHIER_PIN_IECTRL_NONE, 140 - 38, UNIPHIER_PIN_DRV_4_8, 138 + 38, UNIPHIER_PIN_DRV_1BIT, 141 139 38, UNIPHIER_PIN_PULL_UP), 142 140 UNIPHIER_PINCTRL_PIN(39, "MMCDAT0", UNIPHIER_PIN_IECTRL_NONE, 143 - 39, UNIPHIER_PIN_DRV_4_8, 141 + 39, UNIPHIER_PIN_DRV_1BIT, 144 142 39, UNIPHIER_PIN_PULL_UP), 145 143 UNIPHIER_PINCTRL_PIN(40, "MMCDAT1", UNIPHIER_PIN_IECTRL_NONE, 146 - 40, UNIPHIER_PIN_DRV_4_8, 144 + 40, UNIPHIER_PIN_DRV_1BIT, 147 145 40, UNIPHIER_PIN_PULL_UP), 148 146 UNIPHIER_PINCTRL_PIN(41, "MMCDAT2", UNIPHIER_PIN_IECTRL_NONE, 149 - 41, UNIPHIER_PIN_DRV_4_8, 147 + 41, UNIPHIER_PIN_DRV_1BIT, 150 148 41, UNIPHIER_PIN_PULL_UP), 151 149 UNIPHIER_PINCTRL_PIN(42, "MMCDAT3", UNIPHIER_PIN_IECTRL_NONE, 152 - 42, UNIPHIER_PIN_DRV_4_8, 150 + 42, UNIPHIER_PIN_DRV_1BIT, 153 151 42, UNIPHIER_PIN_PULL_UP), 154 152 UNIPHIER_PINCTRL_PIN(43, "MMCDAT4", UNIPHIER_PIN_IECTRL_NONE, 155 - 43, UNIPHIER_PIN_DRV_4_8, 153 + 43, UNIPHIER_PIN_DRV_1BIT, 156 154 43, UNIPHIER_PIN_PULL_UP), 157 155 UNIPHIER_PINCTRL_PIN(44, "MMCDAT5", UNIPHIER_PIN_IECTRL_NONE, 158 - 44, UNIPHIER_PIN_DRV_4_8, 156 + 44, UNIPHIER_PIN_DRV_1BIT, 159 157 44, UNIPHIER_PIN_PULL_UP), 160 158 UNIPHIER_PINCTRL_PIN(45, "MMCDAT6", UNIPHIER_PIN_IECTRL_NONE, 161 - 45, UNIPHIER_PIN_DRV_4_8, 159 + 45, UNIPHIER_PIN_DRV_1BIT, 162 160 45, UNIPHIER_PIN_PULL_UP), 163 161 UNIPHIER_PINCTRL_PIN(46, "MMCDAT7", UNIPHIER_PIN_IECTRL_NONE, 164 - 46, UNIPHIER_PIN_DRV_4_8, 162 + 46, UNIPHIER_PIN_DRV_1BIT, 165 163 46, UNIPHIER_PIN_PULL_UP), 166 164 UNIPHIER_PINCTRL_PIN(47, "TXD0", 0, 167 - 47, UNIPHIER_PIN_DRV_4_8, 165 + 47, UNIPHIER_PIN_DRV_1BIT, 168 166 47, UNIPHIER_PIN_PULL_UP), 169 167 UNIPHIER_PINCTRL_PIN(48, "RXD0", 0, 170 - 48, UNIPHIER_PIN_DRV_4_8, 168 + 48, UNIPHIER_PIN_DRV_1BIT, 171 169 48, UNIPHIER_PIN_PULL_UP), 172 170 UNIPHIER_PINCTRL_PIN(49, "TXD1", 0, 173 - 49, UNIPHIER_PIN_DRV_4_8, 171 + 49, UNIPHIER_PIN_DRV_1BIT, 174 172 49, UNIPHIER_PIN_PULL_UP), 175 173 UNIPHIER_PINCTRL_PIN(50, "RXD1", 0, 176 - 50, UNIPHIER_PIN_DRV_4_8, 174 + 50, UNIPHIER_PIN_DRV_1BIT, 177 175 50, UNIPHIER_PIN_PULL_UP), 178 176 UNIPHIER_PINCTRL_PIN(51, "TXD2", UNIPHIER_PIN_IECTRL_NONE, 179 - 51, UNIPHIER_PIN_DRV_4_8, 177 + 51, UNIPHIER_PIN_DRV_1BIT, 180 178 51, UNIPHIER_PIN_PULL_UP), 181 179 UNIPHIER_PINCTRL_PIN(52, "RXD2", UNIPHIER_PIN_IECTRL_NONE, 182 - 52, UNIPHIER_PIN_DRV_4_8, 180 + 52, UNIPHIER_PIN_DRV_1BIT, 183 181 52, UNIPHIER_PIN_PULL_UP), 184 182 UNIPHIER_PINCTRL_PIN(53, "TXD3", 0, 185 - 53, UNIPHIER_PIN_DRV_4_8, 183 + 53, UNIPHIER_PIN_DRV_1BIT, 186 184 53, UNIPHIER_PIN_PULL_UP), 187 185 UNIPHIER_PINCTRL_PIN(54, "RXD3", 0, 188 - 54, UNIPHIER_PIN_DRV_4_8, 186 + 54, UNIPHIER_PIN_DRV_1BIT, 189 187 54, UNIPHIER_PIN_PULL_UP), 190 188 UNIPHIER_PINCTRL_PIN(55, "MS0CS0", 0, 191 - 55, UNIPHIER_PIN_DRV_4_8, 189 + 55, UNIPHIER_PIN_DRV_1BIT, 192 190 55, UNIPHIER_PIN_PULL_DOWN), 193 191 UNIPHIER_PINCTRL_PIN(56, "MS0DO", 0, 194 - 56, UNIPHIER_PIN_DRV_4_8, 192 + 56, UNIPHIER_PIN_DRV_1BIT, 195 193 56, UNIPHIER_PIN_PULL_DOWN), 196 194 UNIPHIER_PINCTRL_PIN(57, "MS0DI", 0, 197 - 57, UNIPHIER_PIN_DRV_4_8, 195 + 57, UNIPHIER_PIN_DRV_1BIT, 198 196 57, UNIPHIER_PIN_PULL_DOWN), 199 197 UNIPHIER_PINCTRL_PIN(58, "MS0CLK", 0, 200 - 58, UNIPHIER_PIN_DRV_4_8, 198 + 58, UNIPHIER_PIN_DRV_1BIT, 201 199 58, UNIPHIER_PIN_PULL_DOWN), 202 200 UNIPHIER_PINCTRL_PIN(59, "CSCLK", 0, 203 - 59, UNIPHIER_PIN_DRV_4_8, 201 + 59, UNIPHIER_PIN_DRV_1BIT, 204 202 59, UNIPHIER_PIN_PULL_DOWN), 205 203 UNIPHIER_PINCTRL_PIN(60, "CSBPTM", 0, 206 - 60, UNIPHIER_PIN_DRV_4_8, 204 + 60, UNIPHIER_PIN_DRV_1BIT, 207 205 60, UNIPHIER_PIN_PULL_DOWN), 208 206 UNIPHIER_PINCTRL_PIN(61, "CSBMTP", 0, 209 - 61, UNIPHIER_PIN_DRV_4_8, 207 + 61, UNIPHIER_PIN_DRV_1BIT, 210 208 61, UNIPHIER_PIN_PULL_DOWN), 211 209 UNIPHIER_PINCTRL_PIN(62, "XCINTP", 0, 212 - 62, UNIPHIER_PIN_DRV_4_8, 210 + 62, UNIPHIER_PIN_DRV_1BIT, 213 211 62, UNIPHIER_PIN_PULL_DOWN), 214 212 UNIPHIER_PINCTRL_PIN(63, "XCINTM", 0, 215 - 63, UNIPHIER_PIN_DRV_4_8, 213 + 63, UNIPHIER_PIN_DRV_1BIT, 216 214 63, UNIPHIER_PIN_PULL_DOWN), 217 215 UNIPHIER_PINCTRL_PIN(64, "XCMPREQ", 0, 218 - 64, UNIPHIER_PIN_DRV_4_8, 216 + 64, UNIPHIER_PIN_DRV_1BIT, 219 217 64, UNIPHIER_PIN_PULL_DOWN), 220 218 UNIPHIER_PINCTRL_PIN(65, "XSRST", 0, 221 - 65, UNIPHIER_PIN_DRV_4_8, 219 + 65, UNIPHIER_PIN_DRV_1BIT, 222 220 65, UNIPHIER_PIN_PULL_DOWN), 223 221 UNIPHIER_PINCTRL_PIN(66, "LPST", UNIPHIER_PIN_IECTRL_NONE, 224 - 66, UNIPHIER_PIN_DRV_4_8, 222 + 66, UNIPHIER_PIN_DRV_1BIT, 225 223 66, UNIPHIER_PIN_PULL_DOWN), 226 224 UNIPHIER_PINCTRL_PIN(67, "PWMA", 0, 227 - 67, UNIPHIER_PIN_DRV_4_8, 225 + 67, UNIPHIER_PIN_DRV_1BIT, 228 226 67, UNIPHIER_PIN_PULL_DOWN), 229 227 UNIPHIER_PINCTRL_PIN(68, "XIRQ0", 0, 230 - 68, UNIPHIER_PIN_DRV_4_8, 228 + 68, UNIPHIER_PIN_DRV_1BIT, 231 229 68, UNIPHIER_PIN_PULL_DOWN), 232 230 UNIPHIER_PINCTRL_PIN(69, "XIRQ1", 0, 233 - 69, UNIPHIER_PIN_DRV_4_8, 231 + 69, UNIPHIER_PIN_DRV_1BIT, 234 232 69, UNIPHIER_PIN_PULL_DOWN), 235 233 UNIPHIER_PINCTRL_PIN(70, "XIRQ2", 0, 236 - 70, UNIPHIER_PIN_DRV_4_8, 234 + 70, UNIPHIER_PIN_DRV_1BIT, 237 235 70, UNIPHIER_PIN_PULL_DOWN), 238 236 UNIPHIER_PINCTRL_PIN(71, "XIRQ3", 0, 239 - 71, UNIPHIER_PIN_DRV_4_8, 237 + 71, UNIPHIER_PIN_DRV_1BIT, 240 238 71, UNIPHIER_PIN_PULL_DOWN), 241 239 UNIPHIER_PINCTRL_PIN(72, "XIRQ4", 0, 242 - 72, UNIPHIER_PIN_DRV_4_8, 240 + 72, UNIPHIER_PIN_DRV_1BIT, 243 241 72, UNIPHIER_PIN_PULL_DOWN), 244 242 UNIPHIER_PINCTRL_PIN(73, "XIRQ5", 0, 245 - 73, UNIPHIER_PIN_DRV_4_8, 243 + 73, UNIPHIER_PIN_DRV_1BIT, 246 244 73, UNIPHIER_PIN_PULL_DOWN), 247 245 UNIPHIER_PINCTRL_PIN(74, "XIRQ6", 0, 248 - 74, UNIPHIER_PIN_DRV_4_8, 246 + 74, UNIPHIER_PIN_DRV_1BIT, 249 247 74, UNIPHIER_PIN_PULL_DOWN), 250 248 UNIPHIER_PINCTRL_PIN(75, "XIRQ7", 0, 251 - 75, UNIPHIER_PIN_DRV_4_8, 249 + 75, UNIPHIER_PIN_DRV_1BIT, 252 250 75, UNIPHIER_PIN_PULL_DOWN), 253 251 UNIPHIER_PINCTRL_PIN(76, "XIRQ8", 0, 254 - 76, UNIPHIER_PIN_DRV_4_8, 252 + 76, UNIPHIER_PIN_DRV_1BIT, 255 253 76, UNIPHIER_PIN_PULL_DOWN), 256 254 UNIPHIER_PINCTRL_PIN(77, "XIRQ9", 0, 257 - 77, UNIPHIER_PIN_DRV_4_8, 255 + 77, UNIPHIER_PIN_DRV_1BIT, 258 256 77, UNIPHIER_PIN_PULL_DOWN), 259 257 UNIPHIER_PINCTRL_PIN(78, "XIRQ10", 0, 260 - 78, UNIPHIER_PIN_DRV_4_8, 258 + 78, UNIPHIER_PIN_DRV_1BIT, 261 259 78, UNIPHIER_PIN_PULL_DOWN), 262 260 UNIPHIER_PINCTRL_PIN(79, "XIRQ11", UNIPHIER_PIN_IECTRL_NONE, 263 - -1, UNIPHIER_PIN_DRV_FIXED_8, 261 + -1, UNIPHIER_PIN_DRV_FIXED8, 264 262 79, UNIPHIER_PIN_PULL_DOWN), 265 263 UNIPHIER_PINCTRL_PIN(80, "XIRQ12", UNIPHIER_PIN_IECTRL_NONE, 266 - -1, UNIPHIER_PIN_DRV_FIXED_8, 264 + -1, UNIPHIER_PIN_DRV_FIXED8, 267 265 80, UNIPHIER_PIN_PULL_DOWN), 268 266 UNIPHIER_PINCTRL_PIN(81, "XIRQ13", UNIPHIER_PIN_IECTRL_NONE, 269 - -1, UNIPHIER_PIN_DRV_FIXED_8, 267 + -1, UNIPHIER_PIN_DRV_FIXED8, 270 268 81, UNIPHIER_PIN_PULL_DOWN), 271 269 UNIPHIER_PINCTRL_PIN(82, "XIRQ14", 0, 272 - 82, UNIPHIER_PIN_DRV_4_8, 270 + 82, UNIPHIER_PIN_DRV_1BIT, 273 271 82, UNIPHIER_PIN_PULL_DOWN), 274 272 UNIPHIER_PINCTRL_PIN(83, "XIRQ15", 0, 275 - 83, UNIPHIER_PIN_DRV_4_8, 273 + 83, UNIPHIER_PIN_DRV_1BIT, 276 274 83, UNIPHIER_PIN_PULL_DOWN), 277 275 UNIPHIER_PINCTRL_PIN(84, "XIRQ16", 0, 278 - 84, UNIPHIER_PIN_DRV_4_8, 276 + 84, UNIPHIER_PIN_DRV_1BIT, 279 277 84, UNIPHIER_PIN_PULL_DOWN), 280 278 UNIPHIER_PINCTRL_PIN(85, "XIRQ17", UNIPHIER_PIN_IECTRL_NONE, 281 - -1, UNIPHIER_PIN_DRV_FIXED_8, 279 + -1, UNIPHIER_PIN_DRV_FIXED8, 282 280 85, UNIPHIER_PIN_PULL_DOWN), 283 281 UNIPHIER_PINCTRL_PIN(86, "XIRQ18", UNIPHIER_PIN_IECTRL_NONE, 284 - -1, UNIPHIER_PIN_DRV_FIXED_8, 282 + -1, UNIPHIER_PIN_DRV_FIXED8, 285 283 86, UNIPHIER_PIN_PULL_DOWN), 286 284 UNIPHIER_PINCTRL_PIN(87, "XIRQ19", 0, 287 - 87, UNIPHIER_PIN_DRV_4_8, 285 + 87, UNIPHIER_PIN_DRV_1BIT, 288 286 87, UNIPHIER_PIN_PULL_DOWN), 289 287 UNIPHIER_PINCTRL_PIN(88, "XIRQ20", 0, 290 - 88, UNIPHIER_PIN_DRV_4_8, 288 + 88, UNIPHIER_PIN_DRV_1BIT, 291 289 88, UNIPHIER_PIN_PULL_DOWN), 292 290 UNIPHIER_PINCTRL_PIN(89, "PORT00", 0, 293 - 89, UNIPHIER_PIN_DRV_4_8, 291 + 89, UNIPHIER_PIN_DRV_1BIT, 294 292 89, UNIPHIER_PIN_PULL_DOWN), 295 293 UNIPHIER_PINCTRL_PIN(90, "PORT01", 0, 296 - 90, UNIPHIER_PIN_DRV_4_8, 294 + 90, UNIPHIER_PIN_DRV_1BIT, 297 295 90, UNIPHIER_PIN_PULL_DOWN), 298 296 UNIPHIER_PINCTRL_PIN(91, "PORT02", 0, 299 - 91, UNIPHIER_PIN_DRV_4_8, 297 + 91, UNIPHIER_PIN_DRV_1BIT, 300 298 91, UNIPHIER_PIN_PULL_DOWN), 301 299 UNIPHIER_PINCTRL_PIN(92, "PORT03", 0, 302 - 92, UNIPHIER_PIN_DRV_4_8, 300 + 92, UNIPHIER_PIN_DRV_1BIT, 303 301 92, UNIPHIER_PIN_PULL_DOWN), 304 302 UNIPHIER_PINCTRL_PIN(93, "PORT04", 0, 305 - 93, UNIPHIER_PIN_DRV_4_8, 303 + 93, UNIPHIER_PIN_DRV_1BIT, 306 304 93, UNIPHIER_PIN_PULL_DOWN), 307 305 UNIPHIER_PINCTRL_PIN(94, "PORT05", 0, 308 - 94, UNIPHIER_PIN_DRV_4_8, 306 + 94, UNIPHIER_PIN_DRV_1BIT, 309 307 94, UNIPHIER_PIN_PULL_DOWN), 310 308 UNIPHIER_PINCTRL_PIN(95, "PORT06", 0, 311 - 95, UNIPHIER_PIN_DRV_4_8, 309 + 95, UNIPHIER_PIN_DRV_1BIT, 312 310 95, UNIPHIER_PIN_PULL_DOWN), 313 311 UNIPHIER_PINCTRL_PIN(96, "PORT07", 0, 314 - 96, UNIPHIER_PIN_DRV_4_8, 312 + 96, UNIPHIER_PIN_DRV_1BIT, 315 313 96, UNIPHIER_PIN_PULL_DOWN), 316 314 UNIPHIER_PINCTRL_PIN(97, "PORT10", 0, 317 - 97, UNIPHIER_PIN_DRV_4_8, 315 + 97, UNIPHIER_PIN_DRV_1BIT, 318 316 97, UNIPHIER_PIN_PULL_DOWN), 319 317 UNIPHIER_PINCTRL_PIN(98, "PORT11", 0, 320 - 98, UNIPHIER_PIN_DRV_4_8, 318 + 98, UNIPHIER_PIN_DRV_1BIT, 321 319 98, UNIPHIER_PIN_PULL_DOWN), 322 320 UNIPHIER_PINCTRL_PIN(99, "PORT12", 0, 323 - 99, UNIPHIER_PIN_DRV_4_8, 321 + 99, UNIPHIER_PIN_DRV_1BIT, 324 322 99, UNIPHIER_PIN_PULL_DOWN), 325 323 UNIPHIER_PINCTRL_PIN(100, "PORT13", 0, 326 - 100, UNIPHIER_PIN_DRV_4_8, 324 + 100, UNIPHIER_PIN_DRV_1BIT, 327 325 100, UNIPHIER_PIN_PULL_DOWN), 328 326 UNIPHIER_PINCTRL_PIN(101, "PORT14", 0, 329 - 101, UNIPHIER_PIN_DRV_4_8, 327 + 101, UNIPHIER_PIN_DRV_1BIT, 330 328 101, UNIPHIER_PIN_PULL_DOWN), 331 329 UNIPHIER_PINCTRL_PIN(102, "PORT15", 0, 332 - 102, UNIPHIER_PIN_DRV_4_8, 330 + 102, UNIPHIER_PIN_DRV_1BIT, 333 331 102, UNIPHIER_PIN_PULL_DOWN), 334 332 UNIPHIER_PINCTRL_PIN(103, "PORT16", 0, 335 - 103, UNIPHIER_PIN_DRV_4_8, 333 + 103, UNIPHIER_PIN_DRV_1BIT, 336 334 103, UNIPHIER_PIN_PULL_DOWN), 337 335 UNIPHIER_PINCTRL_PIN(104, "PORT17", 0, 338 - 104, UNIPHIER_PIN_DRV_4_8, 336 + 104, UNIPHIER_PIN_DRV_1BIT, 339 337 104, UNIPHIER_PIN_PULL_DOWN), 340 338 UNIPHIER_PINCTRL_PIN(105, "T0HPD", 0, 341 - 105, UNIPHIER_PIN_DRV_4_8, 339 + 105, UNIPHIER_PIN_DRV_1BIT, 342 340 105, UNIPHIER_PIN_PULL_DOWN), 343 341 UNIPHIER_PINCTRL_PIN(106, "T1HPD", 0, 344 - 106, UNIPHIER_PIN_DRV_4_8, 342 + 106, UNIPHIER_PIN_DRV_1BIT, 345 343 106, UNIPHIER_PIN_PULL_DOWN), 346 344 UNIPHIER_PINCTRL_PIN(107, "R0HPD", 0, 347 - 107, UNIPHIER_PIN_DRV_4_8, 345 + 107, UNIPHIER_PIN_DRV_1BIT, 348 346 107, UNIPHIER_PIN_PULL_DOWN), 349 347 UNIPHIER_PINCTRL_PIN(108, "R1HPD", 0, 350 - 108, UNIPHIER_PIN_DRV_4_8, 348 + 108, UNIPHIER_PIN_DRV_1BIT, 351 349 108, UNIPHIER_PIN_PULL_DOWN), 352 350 UNIPHIER_PINCTRL_PIN(109, "XPERST", 0, 353 - 109, UNIPHIER_PIN_DRV_4_8, 351 + 109, UNIPHIER_PIN_DRV_1BIT, 354 352 109, UNIPHIER_PIN_PULL_UP), 355 353 UNIPHIER_PINCTRL_PIN(110, "XPEWAKE", 0, 356 - 110, UNIPHIER_PIN_DRV_4_8, 354 + 110, UNIPHIER_PIN_DRV_1BIT, 357 355 110, UNIPHIER_PIN_PULL_UP), 358 356 UNIPHIER_PINCTRL_PIN(111, "XPECLKRQ", 0, 359 - 111, UNIPHIER_PIN_DRV_4_8, 357 + 111, UNIPHIER_PIN_DRV_1BIT, 360 358 111, UNIPHIER_PIN_PULL_UP), 361 359 UNIPHIER_PINCTRL_PIN(112, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 362 - -1, UNIPHIER_PIN_DRV_FIXED_8, 360 + -1, UNIPHIER_PIN_DRV_FIXED8, 363 361 112, UNIPHIER_PIN_PULL_UP), 364 362 UNIPHIER_PINCTRL_PIN(113, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 365 - -1, UNIPHIER_PIN_DRV_FIXED_8, 363 + -1, UNIPHIER_PIN_DRV_FIXED8, 366 364 113, UNIPHIER_PIN_PULL_UP), 367 365 UNIPHIER_PINCTRL_PIN(114, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 368 - -1, UNIPHIER_PIN_DRV_FIXED_8, 366 + -1, UNIPHIER_PIN_DRV_FIXED8, 369 367 114, UNIPHIER_PIN_PULL_UP), 370 368 UNIPHIER_PINCTRL_PIN(115, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 371 - -1, UNIPHIER_PIN_DRV_FIXED_8, 369 + -1, UNIPHIER_PIN_DRV_FIXED8, 372 370 115, UNIPHIER_PIN_PULL_UP), 373 371 UNIPHIER_PINCTRL_PIN(116, "SDA2", UNIPHIER_PIN_IECTRL_NONE, 374 - -1, UNIPHIER_PIN_DRV_FIXED_8, 372 + -1, UNIPHIER_PIN_DRV_FIXED8, 375 373 116, UNIPHIER_PIN_PULL_UP), 376 374 UNIPHIER_PINCTRL_PIN(117, "SCL2", UNIPHIER_PIN_IECTRL_NONE, 377 - -1, UNIPHIER_PIN_DRV_FIXED_8, 375 + -1, UNIPHIER_PIN_DRV_FIXED8, 378 376 117, UNIPHIER_PIN_PULL_UP), 379 377 UNIPHIER_PINCTRL_PIN(118, "SDA3", UNIPHIER_PIN_IECTRL_NONE, 380 - -1, UNIPHIER_PIN_DRV_FIXED_4, 378 + -1, UNIPHIER_PIN_DRV_FIXED4, 381 379 118, UNIPHIER_PIN_PULL_UP), 382 380 UNIPHIER_PINCTRL_PIN(119, "SCL3", UNIPHIER_PIN_IECTRL_NONE, 383 - -1, UNIPHIER_PIN_DRV_FIXED_4, 381 + -1, UNIPHIER_PIN_DRV_FIXED4, 384 382 119, UNIPHIER_PIN_PULL_UP), 385 383 UNIPHIER_PINCTRL_PIN(120, "SPISYNC", UNIPHIER_PIN_IECTRL_NONE, 386 - -1, UNIPHIER_PIN_DRV_FIXED_8, 384 + -1, UNIPHIER_PIN_DRV_FIXED8, 387 385 120, UNIPHIER_PIN_PULL_DOWN), 388 386 UNIPHIER_PINCTRL_PIN(121, "SPISCLK", UNIPHIER_PIN_IECTRL_NONE, 389 - -1, UNIPHIER_PIN_DRV_FIXED_8, 387 + -1, UNIPHIER_PIN_DRV_FIXED8, 390 388 121, UNIPHIER_PIN_PULL_DOWN), 391 389 UNIPHIER_PINCTRL_PIN(122, "SPITXD", UNIPHIER_PIN_IECTRL_NONE, 392 - -1, UNIPHIER_PIN_DRV_FIXED_8, 390 + -1, UNIPHIER_PIN_DRV_FIXED8, 393 391 122, UNIPHIER_PIN_PULL_DOWN), 394 392 UNIPHIER_PINCTRL_PIN(123, "SPIRXD", UNIPHIER_PIN_IECTRL_NONE, 395 - -1, UNIPHIER_PIN_DRV_FIXED_8, 393 + -1, UNIPHIER_PIN_DRV_FIXED8, 396 394 123, UNIPHIER_PIN_PULL_DOWN), 397 395 UNIPHIER_PINCTRL_PIN(124, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 398 - -1, UNIPHIER_PIN_DRV_FIXED_8, 396 + -1, UNIPHIER_PIN_DRV_FIXED8, 399 397 124, UNIPHIER_PIN_PULL_DOWN), 400 398 UNIPHIER_PINCTRL_PIN(125, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 401 - -1, UNIPHIER_PIN_DRV_FIXED_8, 399 + -1, UNIPHIER_PIN_DRV_FIXED8, 402 400 125, UNIPHIER_PIN_PULL_UP), 403 401 UNIPHIER_PINCTRL_PIN(126, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 404 - -1, UNIPHIER_PIN_DRV_FIXED_8, 402 + -1, UNIPHIER_PIN_DRV_FIXED8, 405 403 126, UNIPHIER_PIN_PULL_DOWN), 406 404 UNIPHIER_PINCTRL_PIN(127, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 407 - -1, UNIPHIER_PIN_DRV_FIXED_8, 405 + -1, UNIPHIER_PIN_DRV_FIXED8, 408 406 127, UNIPHIER_PIN_PULL_UP), 409 407 UNIPHIER_PINCTRL_PIN(128, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 410 - -1, UNIPHIER_PIN_DRV_FIXED_8, 408 + -1, UNIPHIER_PIN_DRV_FIXED8, 411 409 128, UNIPHIER_PIN_PULL_DOWN), 412 410 UNIPHIER_PINCTRL_PIN(129, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 413 - -1, UNIPHIER_PIN_DRV_FIXED_8, 411 + -1, UNIPHIER_PIN_DRV_FIXED8, 414 412 129, UNIPHIER_PIN_PULL_UP), 415 413 UNIPHIER_PINCTRL_PIN(130, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE, 416 - -1, UNIPHIER_PIN_DRV_FIXED_8, 414 + -1, UNIPHIER_PIN_DRV_FIXED8, 417 415 130, UNIPHIER_PIN_PULL_DOWN), 418 416 UNIPHIER_PINCTRL_PIN(131, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE, 419 - -1, UNIPHIER_PIN_DRV_FIXED_8, 417 + -1, UNIPHIER_PIN_DRV_FIXED8, 420 418 131, UNIPHIER_PIN_PULL_DOWN), 421 419 UNIPHIER_PINCTRL_PIN(132, "SMTD0", UNIPHIER_PIN_IECTRL_NONE, 422 - -1, UNIPHIER_PIN_DRV_FIXED_8, 420 + -1, UNIPHIER_PIN_DRV_FIXED8, 423 421 132, UNIPHIER_PIN_PULL_DOWN), 424 422 UNIPHIER_PINCTRL_PIN(133, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE, 425 - -1, UNIPHIER_PIN_DRV_FIXED_8, 423 + -1, UNIPHIER_PIN_DRV_FIXED8, 426 424 133, UNIPHIER_PIN_PULL_DOWN), 427 425 UNIPHIER_PINCTRL_PIN(134, "SMTCLK0", UNIPHIER_PIN_IECTRL_NONE, 428 - -1, UNIPHIER_PIN_DRV_FIXED_8, 426 + -1, UNIPHIER_PIN_DRV_FIXED8, 429 427 134, UNIPHIER_PIN_PULL_DOWN), 430 428 UNIPHIER_PINCTRL_PIN(135, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE, 431 - -1, UNIPHIER_PIN_DRV_FIXED_8, 429 + -1, UNIPHIER_PIN_DRV_FIXED8, 432 430 135, UNIPHIER_PIN_PULL_DOWN), 433 431 UNIPHIER_PINCTRL_PIN(136, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE, 434 - -1, UNIPHIER_PIN_DRV_FIXED_8, 432 + -1, UNIPHIER_PIN_DRV_FIXED8, 435 433 136, UNIPHIER_PIN_PULL_DOWN), 436 434 UNIPHIER_PINCTRL_PIN(137, "SMTD1", UNIPHIER_PIN_IECTRL_NONE, 437 - -1, UNIPHIER_PIN_DRV_FIXED_8, 435 + -1, UNIPHIER_PIN_DRV_FIXED8, 438 436 137, UNIPHIER_PIN_PULL_DOWN), 439 437 UNIPHIER_PINCTRL_PIN(138, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE, 440 - -1, UNIPHIER_PIN_DRV_FIXED_8, 438 + -1, UNIPHIER_PIN_DRV_FIXED8, 441 439 138, UNIPHIER_PIN_PULL_DOWN), 442 440 UNIPHIER_PINCTRL_PIN(139, "SMTCLK1", UNIPHIER_PIN_IECTRL_NONE, 443 - -1, UNIPHIER_PIN_DRV_FIXED_8, 441 + -1, UNIPHIER_PIN_DRV_FIXED8, 444 442 139, UNIPHIER_PIN_PULL_DOWN), 445 443 UNIPHIER_PINCTRL_PIN(140, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE, 446 - -1, UNIPHIER_PIN_DRV_FIXED_8, 444 + -1, UNIPHIER_PIN_DRV_FIXED8, 447 445 140, UNIPHIER_PIN_PULL_DOWN), 448 446 UNIPHIER_PINCTRL_PIN(141, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE, 449 - -1, UNIPHIER_PIN_DRV_FIXED_8, 447 + -1, UNIPHIER_PIN_DRV_FIXED8, 450 448 141, UNIPHIER_PIN_PULL_DOWN), 451 449 UNIPHIER_PINCTRL_PIN(142, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE, 452 - -1, UNIPHIER_PIN_DRV_FIXED_8, 450 + -1, UNIPHIER_PIN_DRV_FIXED8, 453 451 142, UNIPHIER_PIN_PULL_DOWN), 454 452 UNIPHIER_PINCTRL_PIN(143, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE, 455 - -1, UNIPHIER_PIN_DRV_FIXED_8, 453 + -1, UNIPHIER_PIN_DRV_FIXED8, 456 454 143, UNIPHIER_PIN_PULL_DOWN), 457 455 UNIPHIER_PINCTRL_PIN(144, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE, 458 - -1, UNIPHIER_PIN_DRV_FIXED_8, 456 + -1, UNIPHIER_PIN_DRV_FIXED8, 459 457 144, UNIPHIER_PIN_PULL_DOWN), 460 458 UNIPHIER_PINCTRL_PIN(145, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE, 461 - -1, UNIPHIER_PIN_DRV_FIXED_8, 459 + -1, UNIPHIER_PIN_DRV_FIXED8, 462 460 145, UNIPHIER_PIN_PULL_DOWN), 463 461 UNIPHIER_PINCTRL_PIN(146, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE, 464 - -1, UNIPHIER_PIN_DRV_FIXED_8, 462 + -1, UNIPHIER_PIN_DRV_FIXED8, 465 463 146, UNIPHIER_PIN_PULL_DOWN), 466 464 UNIPHIER_PINCTRL_PIN(147, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE, 467 - -1, UNIPHIER_PIN_DRV_FIXED_8, 465 + -1, UNIPHIER_PIN_DRV_FIXED8, 468 466 147, UNIPHIER_PIN_PULL_DOWN), 469 467 UNIPHIER_PINCTRL_PIN(148, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE, 470 - -1, UNIPHIER_PIN_DRV_FIXED_8, 468 + -1, UNIPHIER_PIN_DRV_FIXED8, 471 469 148, UNIPHIER_PIN_PULL_DOWN), 472 470 UNIPHIER_PINCTRL_PIN(149, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE, 473 - -1, UNIPHIER_PIN_DRV_FIXED_8, 471 + -1, UNIPHIER_PIN_DRV_FIXED8, 474 472 149, UNIPHIER_PIN_PULL_DOWN), 475 473 UNIPHIER_PINCTRL_PIN(150, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE, 476 - -1, UNIPHIER_PIN_DRV_FIXED_8, 474 + -1, UNIPHIER_PIN_DRV_FIXED8, 477 475 150, UNIPHIER_PIN_PULL_DOWN), 478 476 UNIPHIER_PINCTRL_PIN(151, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE, 479 - -1, UNIPHIER_PIN_DRV_FIXED_8, 477 + -1, UNIPHIER_PIN_DRV_FIXED8, 480 478 151, UNIPHIER_PIN_PULL_DOWN), 481 479 UNIPHIER_PINCTRL_PIN(152, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE, 482 - -1, UNIPHIER_PIN_DRV_FIXED_8, 480 + -1, UNIPHIER_PIN_DRV_FIXED8, 483 481 152, UNIPHIER_PIN_PULL_DOWN), 484 482 UNIPHIER_PINCTRL_PIN(153, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE, 485 - -1, UNIPHIER_PIN_DRV_FIXED_8, 483 + -1, UNIPHIER_PIN_DRV_FIXED8, 486 484 153, UNIPHIER_PIN_PULL_DOWN), 487 485 UNIPHIER_PINCTRL_PIN(154, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE, 488 - -1, UNIPHIER_PIN_DRV_FIXED_8, 486 + -1, UNIPHIER_PIN_DRV_FIXED8, 489 487 154, UNIPHIER_PIN_PULL_DOWN), 490 488 UNIPHIER_PINCTRL_PIN(155, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE, 491 - -1, UNIPHIER_PIN_DRV_FIXED_8, 489 + -1, UNIPHIER_PIN_DRV_FIXED8, 492 490 155, UNIPHIER_PIN_PULL_DOWN), 493 491 UNIPHIER_PINCTRL_PIN(156, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE, 494 - -1, UNIPHIER_PIN_DRV_FIXED_8, 492 + -1, UNIPHIER_PIN_DRV_FIXED8, 495 493 156, UNIPHIER_PIN_PULL_DOWN), 496 494 UNIPHIER_PINCTRL_PIN(157, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE, 497 - -1, UNIPHIER_PIN_DRV_FIXED_8, 495 + -1, UNIPHIER_PIN_DRV_FIXED8, 498 496 157, UNIPHIER_PIN_PULL_DOWN), 499 497 UNIPHIER_PINCTRL_PIN(158, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE, 500 - -1, UNIPHIER_PIN_DRV_FIXED_8, 498 + -1, UNIPHIER_PIN_DRV_FIXED8, 501 499 158, UNIPHIER_PIN_PULL_DOWN), 502 500 UNIPHIER_PINCTRL_PIN(159, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE, 503 - -1, UNIPHIER_PIN_DRV_FIXED_8, 501 + -1, UNIPHIER_PIN_DRV_FIXED8, 504 502 159, UNIPHIER_PIN_PULL_DOWN), 505 503 UNIPHIER_PINCTRL_PIN(160, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE, 506 - -1, UNIPHIER_PIN_DRV_FIXED_8, 504 + -1, UNIPHIER_PIN_DRV_FIXED8, 507 505 160, UNIPHIER_PIN_PULL_DOWN), 508 506 UNIPHIER_PINCTRL_PIN(161, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE, 509 - -1, UNIPHIER_PIN_DRV_FIXED_8, 507 + -1, UNIPHIER_PIN_DRV_FIXED8, 510 508 161, UNIPHIER_PIN_PULL_DOWN), 511 509 UNIPHIER_PINCTRL_PIN(162, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE, 512 - -1, UNIPHIER_PIN_DRV_FIXED_8, 510 + -1, UNIPHIER_PIN_DRV_FIXED8, 513 511 162, UNIPHIER_PIN_PULL_DOWN), 514 512 UNIPHIER_PINCTRL_PIN(163, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE, 515 - -1, UNIPHIER_PIN_DRV_FIXED_8, 513 + -1, UNIPHIER_PIN_DRV_FIXED8, 516 514 163, UNIPHIER_PIN_PULL_DOWN), 517 515 UNIPHIER_PINCTRL_PIN(164, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE, 518 - -1, UNIPHIER_PIN_DRV_FIXED_8, 516 + -1, UNIPHIER_PIN_DRV_FIXED8, 519 517 164, UNIPHIER_PIN_PULL_DOWN), 520 518 UNIPHIER_PINCTRL_PIN(165, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE, 521 - -1, UNIPHIER_PIN_DRV_FIXED_8, 519 + -1, UNIPHIER_PIN_DRV_FIXED8, 522 520 165, UNIPHIER_PIN_PULL_DOWN), 523 521 UNIPHIER_PINCTRL_PIN(166, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE, 524 - -1, UNIPHIER_PIN_DRV_FIXED_8, 522 + -1, UNIPHIER_PIN_DRV_FIXED8, 525 523 166, UNIPHIER_PIN_PULL_DOWN), 526 524 UNIPHIER_PINCTRL_PIN(167, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE, 527 - -1, UNIPHIER_PIN_DRV_FIXED_8, 525 + -1, UNIPHIER_PIN_DRV_FIXED8, 528 526 167, UNIPHIER_PIN_PULL_DOWN), 529 527 UNIPHIER_PINCTRL_PIN(168, "CH7CLK", UNIPHIER_PIN_IECTRL_NONE, 530 - -1, UNIPHIER_PIN_DRV_FIXED_8, 528 + -1, UNIPHIER_PIN_DRV_FIXED8, 531 529 168, UNIPHIER_PIN_PULL_DOWN), 532 530 UNIPHIER_PINCTRL_PIN(169, "CH7PSYNC", UNIPHIER_PIN_IECTRL_NONE, 533 - -1, UNIPHIER_PIN_DRV_FIXED_8, 531 + -1, UNIPHIER_PIN_DRV_FIXED8, 534 532 169, UNIPHIER_PIN_PULL_DOWN), 535 533 UNIPHIER_PINCTRL_PIN(170, "CH7VAL", UNIPHIER_PIN_IECTRL_NONE, 536 - -1, UNIPHIER_PIN_DRV_FIXED_8, 534 + -1, UNIPHIER_PIN_DRV_FIXED8, 537 535 170, UNIPHIER_PIN_PULL_DOWN), 538 536 UNIPHIER_PINCTRL_PIN(171, "CH7DATA", UNIPHIER_PIN_IECTRL_NONE, 539 - -1, UNIPHIER_PIN_DRV_FIXED_8, 537 + -1, UNIPHIER_PIN_DRV_FIXED8, 540 538 171, UNIPHIER_PIN_PULL_DOWN), 541 539 UNIPHIER_PINCTRL_PIN(172, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE, 542 - -1, UNIPHIER_PIN_DRV_FIXED_8, 540 + -1, UNIPHIER_PIN_DRV_FIXED8, 543 541 172, UNIPHIER_PIN_PULL_DOWN), 544 542 UNIPHIER_PINCTRL_PIN(173, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE, 545 - -1, UNIPHIER_PIN_DRV_FIXED_8, 543 + -1, UNIPHIER_PIN_DRV_FIXED8, 546 544 173, UNIPHIER_PIN_PULL_DOWN), 547 545 UNIPHIER_PINCTRL_PIN(174, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE, 548 - -1, UNIPHIER_PIN_DRV_FIXED_8, 546 + -1, UNIPHIER_PIN_DRV_FIXED8, 549 547 174, UNIPHIER_PIN_PULL_DOWN), 550 548 UNIPHIER_PINCTRL_PIN(175, "AI1D0", UNIPHIER_PIN_IECTRL_NONE, 551 - -1, UNIPHIER_PIN_DRV_FIXED_8, 549 + -1, UNIPHIER_PIN_DRV_FIXED8, 552 550 175, UNIPHIER_PIN_PULL_DOWN), 553 551 UNIPHIER_PINCTRL_PIN(176, "AI1D1", UNIPHIER_PIN_IECTRL_NONE, 554 - -1, UNIPHIER_PIN_DRV_FIXED_8, 552 + -1, UNIPHIER_PIN_DRV_FIXED8, 555 553 176, UNIPHIER_PIN_PULL_DOWN), 556 554 UNIPHIER_PINCTRL_PIN(177, "AI1D2", UNIPHIER_PIN_IECTRL_NONE, 557 - -1, UNIPHIER_PIN_DRV_FIXED_8, 555 + -1, UNIPHIER_PIN_DRV_FIXED8, 558 556 177, UNIPHIER_PIN_PULL_DOWN), 559 557 UNIPHIER_PINCTRL_PIN(178, "AI1D3", UNIPHIER_PIN_IECTRL_NONE, 560 - -1, UNIPHIER_PIN_DRV_FIXED_8, 558 + -1, UNIPHIER_PIN_DRV_FIXED8, 561 559 178, UNIPHIER_PIN_PULL_DOWN), 562 560 UNIPHIER_PINCTRL_PIN(179, "AI2ADCCK", UNIPHIER_PIN_IECTRL_NONE, 563 - -1, UNIPHIER_PIN_DRV_FIXED_8, 561 + -1, UNIPHIER_PIN_DRV_FIXED8, 564 562 179, UNIPHIER_PIN_PULL_DOWN), 565 563 UNIPHIER_PINCTRL_PIN(180, "AI2BCK", UNIPHIER_PIN_IECTRL_NONE, 566 - -1, UNIPHIER_PIN_DRV_FIXED_8, 564 + -1, UNIPHIER_PIN_DRV_FIXED8, 567 565 180, UNIPHIER_PIN_PULL_DOWN), 568 566 UNIPHIER_PINCTRL_PIN(181, "AI2LRCK", UNIPHIER_PIN_IECTRL_NONE, 569 - -1, UNIPHIER_PIN_DRV_FIXED_8, 567 + -1, UNIPHIER_PIN_DRV_FIXED8, 570 568 181, UNIPHIER_PIN_PULL_DOWN), 571 569 UNIPHIER_PINCTRL_PIN(182, "AI2D0", UNIPHIER_PIN_IECTRL_NONE, 572 - -1, UNIPHIER_PIN_DRV_FIXED_8, 570 + -1, UNIPHIER_PIN_DRV_FIXED8, 573 571 182, UNIPHIER_PIN_PULL_DOWN), 574 572 UNIPHIER_PINCTRL_PIN(183, "AI2D1", UNIPHIER_PIN_IECTRL_NONE, 575 - -1, UNIPHIER_PIN_DRV_FIXED_8, 573 + -1, UNIPHIER_PIN_DRV_FIXED8, 576 574 183, UNIPHIER_PIN_PULL_DOWN), 577 575 UNIPHIER_PINCTRL_PIN(184, "AI2D2", UNIPHIER_PIN_IECTRL_NONE, 578 - -1, UNIPHIER_PIN_DRV_FIXED_8, 576 + -1, UNIPHIER_PIN_DRV_FIXED8, 579 577 184, UNIPHIER_PIN_PULL_DOWN), 580 578 UNIPHIER_PINCTRL_PIN(185, "AI2D3", UNIPHIER_PIN_IECTRL_NONE, 581 - -1, UNIPHIER_PIN_DRV_FIXED_8, 579 + -1, UNIPHIER_PIN_DRV_FIXED8, 582 580 185, UNIPHIER_PIN_PULL_DOWN), 583 581 UNIPHIER_PINCTRL_PIN(186, "AI3ADCCK", UNIPHIER_PIN_IECTRL_NONE, 584 - -1, UNIPHIER_PIN_DRV_FIXED_8, 582 + -1, UNIPHIER_PIN_DRV_FIXED8, 585 583 186, UNIPHIER_PIN_PULL_DOWN), 586 584 UNIPHIER_PINCTRL_PIN(187, "AI3BCK", UNIPHIER_PIN_IECTRL_NONE, 587 - -1, UNIPHIER_PIN_DRV_FIXED_8, 585 + -1, UNIPHIER_PIN_DRV_FIXED8, 588 586 187, UNIPHIER_PIN_PULL_DOWN), 589 587 UNIPHIER_PINCTRL_PIN(188, "AI3LRCK", UNIPHIER_PIN_IECTRL_NONE, 590 - -1, UNIPHIER_PIN_DRV_FIXED_8, 588 + -1, UNIPHIER_PIN_DRV_FIXED8, 591 589 188, UNIPHIER_PIN_PULL_DOWN), 592 590 UNIPHIER_PINCTRL_PIN(189, "AI3D0", UNIPHIER_PIN_IECTRL_NONE, 593 - -1, UNIPHIER_PIN_DRV_FIXED_8, 591 + -1, UNIPHIER_PIN_DRV_FIXED8, 594 592 189, UNIPHIER_PIN_PULL_DOWN), 595 593 UNIPHIER_PINCTRL_PIN(190, "AO1IEC", UNIPHIER_PIN_IECTRL_NONE, 596 - -1, UNIPHIER_PIN_DRV_FIXED_8, 594 + -1, UNIPHIER_PIN_DRV_FIXED8, 597 595 190, UNIPHIER_PIN_PULL_DOWN), 598 596 UNIPHIER_PINCTRL_PIN(191, "AO1DACCK", UNIPHIER_PIN_IECTRL_NONE, 599 - -1, UNIPHIER_PIN_DRV_FIXED_8, 597 + -1, UNIPHIER_PIN_DRV_FIXED8, 600 598 191, UNIPHIER_PIN_PULL_DOWN), 601 599 UNIPHIER_PINCTRL_PIN(192, "AO1BCK", UNIPHIER_PIN_IECTRL_NONE, 602 - -1, UNIPHIER_PIN_DRV_FIXED_8, 600 + -1, UNIPHIER_PIN_DRV_FIXED8, 603 601 192, UNIPHIER_PIN_PULL_DOWN), 604 602 UNIPHIER_PINCTRL_PIN(193, "AO1LRCK", UNIPHIER_PIN_IECTRL_NONE, 605 - -1, UNIPHIER_PIN_DRV_FIXED_8, 603 + -1, UNIPHIER_PIN_DRV_FIXED8, 606 604 193, UNIPHIER_PIN_PULL_DOWN), 607 605 UNIPHIER_PINCTRL_PIN(194, "AO1D0", UNIPHIER_PIN_IECTRL_NONE, 608 - -1, UNIPHIER_PIN_DRV_FIXED_8, 606 + -1, UNIPHIER_PIN_DRV_FIXED8, 609 607 194, UNIPHIER_PIN_PULL_DOWN), 610 608 UNIPHIER_PINCTRL_PIN(195, "AO1D1", UNIPHIER_PIN_IECTRL_NONE, 611 - -1, UNIPHIER_PIN_DRV_FIXED_8, 609 + -1, UNIPHIER_PIN_DRV_FIXED8, 612 610 195, UNIPHIER_PIN_PULL_DOWN), 613 611 UNIPHIER_PINCTRL_PIN(196, "AO1D2", UNIPHIER_PIN_IECTRL_NONE, 614 - -1, UNIPHIER_PIN_DRV_FIXED_8, 612 + -1, UNIPHIER_PIN_DRV_FIXED8, 615 613 196, UNIPHIER_PIN_PULL_UP), 616 614 UNIPHIER_PINCTRL_PIN(197, "AO1D3", UNIPHIER_PIN_IECTRL_NONE, 617 - -1, UNIPHIER_PIN_DRV_FIXED_8, 615 + -1, UNIPHIER_PIN_DRV_FIXED8, 618 616 197, UNIPHIER_PIN_PULL_UP), 619 617 UNIPHIER_PINCTRL_PIN(198, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE, 620 - -1, UNIPHIER_PIN_DRV_FIXED_8, 618 + -1, UNIPHIER_PIN_DRV_FIXED8, 621 619 198, UNIPHIER_PIN_PULL_DOWN), 622 620 UNIPHIER_PINCTRL_PIN(199, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 623 - -1, UNIPHIER_PIN_DRV_FIXED_8, 621 + -1, UNIPHIER_PIN_DRV_FIXED8, 624 622 199, UNIPHIER_PIN_PULL_DOWN), 625 623 UNIPHIER_PINCTRL_PIN(200, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 626 - -1, UNIPHIER_PIN_DRV_FIXED_8, 624 + -1, UNIPHIER_PIN_DRV_FIXED8, 627 625 200, UNIPHIER_PIN_PULL_DOWN), 628 626 UNIPHIER_PINCTRL_PIN(201, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 629 - -1, UNIPHIER_PIN_DRV_FIXED_8, 627 + -1, UNIPHIER_PIN_DRV_FIXED8, 630 628 201, UNIPHIER_PIN_PULL_DOWN), 631 629 UNIPHIER_PINCTRL_PIN(202, "AO2D0", UNIPHIER_PIN_IECTRL_NONE, 632 - -1, UNIPHIER_PIN_DRV_FIXED_8, 630 + -1, UNIPHIER_PIN_DRV_FIXED8, 633 631 202, UNIPHIER_PIN_PULL_DOWN), 634 632 UNIPHIER_PINCTRL_PIN(203, "AO2D1", UNIPHIER_PIN_IECTRL_NONE, 635 - -1, UNIPHIER_PIN_DRV_FIXED_8, 633 + -1, UNIPHIER_PIN_DRV_FIXED8, 636 634 203, UNIPHIER_PIN_PULL_DOWN), 637 635 UNIPHIER_PINCTRL_PIN(204, "AO2D2", UNIPHIER_PIN_IECTRL_NONE, 638 - -1, UNIPHIER_PIN_DRV_FIXED_8, 636 + -1, UNIPHIER_PIN_DRV_FIXED8, 639 637 204, UNIPHIER_PIN_PULL_DOWN), 640 638 UNIPHIER_PINCTRL_PIN(205, "AO2D3", UNIPHIER_PIN_IECTRL_NONE, 641 - -1, UNIPHIER_PIN_DRV_FIXED_8, 639 + -1, UNIPHIER_PIN_DRV_FIXED8, 642 640 205, UNIPHIER_PIN_PULL_DOWN), 643 641 UNIPHIER_PINCTRL_PIN(206, "AO3DACCK", UNIPHIER_PIN_IECTRL_NONE, 644 - -1, UNIPHIER_PIN_DRV_FIXED_8, 642 + -1, UNIPHIER_PIN_DRV_FIXED8, 645 643 206, UNIPHIER_PIN_PULL_DOWN), 646 644 UNIPHIER_PINCTRL_PIN(207, "AO3BCK", UNIPHIER_PIN_IECTRL_NONE, 647 - -1, UNIPHIER_PIN_DRV_FIXED_8, 645 + -1, UNIPHIER_PIN_DRV_FIXED8, 648 646 207, UNIPHIER_PIN_PULL_DOWN), 649 647 UNIPHIER_PINCTRL_PIN(208, "AO3LRCK", UNIPHIER_PIN_IECTRL_NONE, 650 - -1, UNIPHIER_PIN_DRV_FIXED_8, 648 + -1, UNIPHIER_PIN_DRV_FIXED8, 651 649 208, UNIPHIER_PIN_PULL_DOWN), 652 650 UNIPHIER_PINCTRL_PIN(209, "AO3DMIX", UNIPHIER_PIN_IECTRL_NONE, 653 - -1, UNIPHIER_PIN_DRV_FIXED_8, 651 + -1, UNIPHIER_PIN_DRV_FIXED8, 654 652 209, UNIPHIER_PIN_PULL_DOWN), 655 653 UNIPHIER_PINCTRL_PIN(210, "AO4DACCK", UNIPHIER_PIN_IECTRL_NONE, 656 - -1, UNIPHIER_PIN_DRV_FIXED_8, 654 + -1, UNIPHIER_PIN_DRV_FIXED8, 657 655 210, UNIPHIER_PIN_PULL_DOWN), 658 656 UNIPHIER_PINCTRL_PIN(211, "AO4BCK", UNIPHIER_PIN_IECTRL_NONE, 659 - -1, UNIPHIER_PIN_DRV_FIXED_8, 657 + -1, UNIPHIER_PIN_DRV_FIXED8, 660 658 211, UNIPHIER_PIN_PULL_DOWN), 661 659 UNIPHIER_PINCTRL_PIN(212, "AO4LRCK", UNIPHIER_PIN_IECTRL_NONE, 662 - -1, UNIPHIER_PIN_DRV_FIXED_8, 660 + -1, UNIPHIER_PIN_DRV_FIXED8, 663 661 212, UNIPHIER_PIN_PULL_DOWN), 664 662 UNIPHIER_PINCTRL_PIN(213, "AO4DMIX", UNIPHIER_PIN_IECTRL_NONE, 665 - -1, UNIPHIER_PIN_DRV_FIXED_8, 663 + -1, UNIPHIER_PIN_DRV_FIXED8, 666 664 213, UNIPHIER_PIN_PULL_DOWN), 667 665 UNIPHIER_PINCTRL_PIN(214, "VI1CLK", UNIPHIER_PIN_IECTRL_NONE, 668 - -1, UNIPHIER_PIN_DRV_FIXED_8, 666 + -1, UNIPHIER_PIN_DRV_FIXED8, 669 667 214, UNIPHIER_PIN_PULL_DOWN), 670 668 UNIPHIER_PINCTRL_PIN(215, "VI1C0", UNIPHIER_PIN_IECTRL_NONE, 671 - -1, UNIPHIER_PIN_DRV_FIXED_8, 669 + -1, UNIPHIER_PIN_DRV_FIXED8, 672 670 215, UNIPHIER_PIN_PULL_DOWN), 673 671 UNIPHIER_PINCTRL_PIN(216, "VI1C1", UNIPHIER_PIN_IECTRL_NONE, 674 - -1, UNIPHIER_PIN_DRV_FIXED_8, 672 + -1, UNIPHIER_PIN_DRV_FIXED8, 675 673 216, UNIPHIER_PIN_PULL_DOWN), 676 674 UNIPHIER_PINCTRL_PIN(217, "VI1C2", UNIPHIER_PIN_IECTRL_NONE, 677 - -1, UNIPHIER_PIN_DRV_FIXED_8, 675 + -1, UNIPHIER_PIN_DRV_FIXED8, 678 676 217, UNIPHIER_PIN_PULL_DOWN), 679 677 UNIPHIER_PINCTRL_PIN(218, "VI1C3", UNIPHIER_PIN_IECTRL_NONE, 680 - -1, UNIPHIER_PIN_DRV_FIXED_8, 678 + -1, UNIPHIER_PIN_DRV_FIXED8, 681 679 218, UNIPHIER_PIN_PULL_DOWN), 682 680 UNIPHIER_PINCTRL_PIN(219, "VI1C4", UNIPHIER_PIN_IECTRL_NONE, 683 - -1, UNIPHIER_PIN_DRV_FIXED_8, 681 + -1, UNIPHIER_PIN_DRV_FIXED8, 684 682 219, UNIPHIER_PIN_PULL_DOWN), 685 683 UNIPHIER_PINCTRL_PIN(220, "VI1C5", UNIPHIER_PIN_IECTRL_NONE, 686 - -1, UNIPHIER_PIN_DRV_FIXED_8, 684 + -1, UNIPHIER_PIN_DRV_FIXED8, 687 685 220, UNIPHIER_PIN_PULL_DOWN), 688 686 UNIPHIER_PINCTRL_PIN(221, "VI1C6", UNIPHIER_PIN_IECTRL_NONE, 689 - -1, UNIPHIER_PIN_DRV_FIXED_8, 687 + -1, UNIPHIER_PIN_DRV_FIXED8, 690 688 221, UNIPHIER_PIN_PULL_DOWN), 691 689 UNIPHIER_PINCTRL_PIN(222, "VI1C7", UNIPHIER_PIN_IECTRL_NONE, 692 - -1, UNIPHIER_PIN_DRV_FIXED_8, 690 + -1, UNIPHIER_PIN_DRV_FIXED8, 693 691 222, UNIPHIER_PIN_PULL_DOWN), 694 692 UNIPHIER_PINCTRL_PIN(223, "VI1C8", UNIPHIER_PIN_IECTRL_NONE, 695 - -1, UNIPHIER_PIN_DRV_FIXED_8, 693 + -1, UNIPHIER_PIN_DRV_FIXED8, 696 694 223, UNIPHIER_PIN_PULL_DOWN), 697 695 UNIPHIER_PINCTRL_PIN(224, "VI1C9", UNIPHIER_PIN_IECTRL_NONE, 698 - -1, UNIPHIER_PIN_DRV_FIXED_8, 696 + -1, UNIPHIER_PIN_DRV_FIXED8, 699 697 224, UNIPHIER_PIN_PULL_DOWN), 700 698 UNIPHIER_PINCTRL_PIN(225, "VI1Y0", UNIPHIER_PIN_IECTRL_NONE, 701 - -1, UNIPHIER_PIN_DRV_FIXED_8, 699 + -1, UNIPHIER_PIN_DRV_FIXED8, 702 700 225, UNIPHIER_PIN_PULL_DOWN), 703 701 UNIPHIER_PINCTRL_PIN(226, "VI1Y1", UNIPHIER_PIN_IECTRL_NONE, 704 - -1, UNIPHIER_PIN_DRV_FIXED_8, 702 + -1, UNIPHIER_PIN_DRV_FIXED8, 705 703 226, UNIPHIER_PIN_PULL_DOWN), 706 704 UNIPHIER_PINCTRL_PIN(227, "VI1Y2", UNIPHIER_PIN_IECTRL_NONE, 707 - -1, UNIPHIER_PIN_DRV_FIXED_8, 705 + -1, UNIPHIER_PIN_DRV_FIXED8, 708 706 227, UNIPHIER_PIN_PULL_DOWN), 709 707 UNIPHIER_PINCTRL_PIN(228, "VI1Y3", UNIPHIER_PIN_IECTRL_NONE, 710 - -1, UNIPHIER_PIN_DRV_FIXED_8, 708 + -1, UNIPHIER_PIN_DRV_FIXED8, 711 709 228, UNIPHIER_PIN_PULL_DOWN), 712 710 UNIPHIER_PINCTRL_PIN(229, "VI1Y4", UNIPHIER_PIN_IECTRL_NONE, 713 - -1, UNIPHIER_PIN_DRV_FIXED_8, 711 + -1, UNIPHIER_PIN_DRV_FIXED8, 714 712 229, UNIPHIER_PIN_PULL_DOWN), 715 713 UNIPHIER_PINCTRL_PIN(230, "VI1Y5", UNIPHIER_PIN_IECTRL_NONE, 716 - -1, UNIPHIER_PIN_DRV_FIXED_8, 714 + -1, UNIPHIER_PIN_DRV_FIXED8, 717 715 230, UNIPHIER_PIN_PULL_DOWN), 718 716 UNIPHIER_PINCTRL_PIN(231, "VI1Y6", UNIPHIER_PIN_IECTRL_NONE, 719 - -1, UNIPHIER_PIN_DRV_FIXED_8, 717 + -1, UNIPHIER_PIN_DRV_FIXED8, 720 718 231, UNIPHIER_PIN_PULL_DOWN), 721 719 UNIPHIER_PINCTRL_PIN(232, "VI1Y7", UNIPHIER_PIN_IECTRL_NONE, 722 - -1, UNIPHIER_PIN_DRV_FIXED_8, 720 + -1, UNIPHIER_PIN_DRV_FIXED8, 723 721 232, UNIPHIER_PIN_PULL_DOWN), 724 722 UNIPHIER_PINCTRL_PIN(233, "VI1Y8", UNIPHIER_PIN_IECTRL_NONE, 725 - -1, UNIPHIER_PIN_DRV_FIXED_8, 723 + -1, UNIPHIER_PIN_DRV_FIXED8, 726 724 233, UNIPHIER_PIN_PULL_DOWN), 727 725 UNIPHIER_PINCTRL_PIN(234, "VI1Y9", UNIPHIER_PIN_IECTRL_NONE, 728 - -1, UNIPHIER_PIN_DRV_FIXED_8, 726 + -1, UNIPHIER_PIN_DRV_FIXED8, 729 727 234, UNIPHIER_PIN_PULL_DOWN), 730 728 UNIPHIER_PINCTRL_PIN(235, "VI1DE", UNIPHIER_PIN_IECTRL_NONE, 731 - -1, UNIPHIER_PIN_DRV_FIXED_8, 729 + -1, UNIPHIER_PIN_DRV_FIXED8, 732 730 235, UNIPHIER_PIN_PULL_DOWN), 733 731 UNIPHIER_PINCTRL_PIN(236, "VI1HSYNC", UNIPHIER_PIN_IECTRL_NONE, 734 - -1, UNIPHIER_PIN_DRV_FIXED_8, 732 + -1, UNIPHIER_PIN_DRV_FIXED8, 735 733 236, UNIPHIER_PIN_PULL_DOWN), 736 734 UNIPHIER_PINCTRL_PIN(237, "VI1VSYNC", UNIPHIER_PIN_IECTRL_NONE, 737 - -1, UNIPHIER_PIN_DRV_FIXED_8, 735 + -1, UNIPHIER_PIN_DRV_FIXED8, 738 736 237, UNIPHIER_PIN_PULL_DOWN), 739 737 UNIPHIER_PINCTRL_PIN(238, "VO1CLK", UNIPHIER_PIN_IECTRL_NONE, 740 - -1, UNIPHIER_PIN_DRV_FIXED_8, 738 + -1, UNIPHIER_PIN_DRV_FIXED8, 741 739 238, UNIPHIER_PIN_PULL_DOWN), 742 740 UNIPHIER_PINCTRL_PIN(239, "VO1D0", UNIPHIER_PIN_IECTRL_NONE, 743 - -1, UNIPHIER_PIN_DRV_FIXED_8, 741 + -1, UNIPHIER_PIN_DRV_FIXED8, 744 742 239, UNIPHIER_PIN_PULL_DOWN), 745 743 UNIPHIER_PINCTRL_PIN(240, "VO1D1", UNIPHIER_PIN_IECTRL_NONE, 746 - -1, UNIPHIER_PIN_DRV_FIXED_8, 744 + -1, UNIPHIER_PIN_DRV_FIXED8, 747 745 240, UNIPHIER_PIN_PULL_DOWN), 748 746 UNIPHIER_PINCTRL_PIN(241, "VO1D2", UNIPHIER_PIN_IECTRL_NONE, 749 - -1, UNIPHIER_PIN_DRV_FIXED_8, 747 + -1, UNIPHIER_PIN_DRV_FIXED8, 750 748 241, UNIPHIER_PIN_PULL_DOWN), 751 749 UNIPHIER_PINCTRL_PIN(242, "VO1D3", UNIPHIER_PIN_IECTRL_NONE, 752 - -1, UNIPHIER_PIN_DRV_FIXED_8, 750 + -1, UNIPHIER_PIN_DRV_FIXED8, 753 751 242, UNIPHIER_PIN_PULL_DOWN), 754 752 UNIPHIER_PINCTRL_PIN(243, "VO1D4", UNIPHIER_PIN_IECTRL_NONE, 755 - -1, UNIPHIER_PIN_DRV_FIXED_8, 753 + -1, UNIPHIER_PIN_DRV_FIXED8, 756 754 243, UNIPHIER_PIN_PULL_DOWN), 757 755 UNIPHIER_PINCTRL_PIN(244, "VO1D5", UNIPHIER_PIN_IECTRL_NONE, 758 - -1, UNIPHIER_PIN_DRV_FIXED_8, 756 + -1, UNIPHIER_PIN_DRV_FIXED8, 759 757 244, UNIPHIER_PIN_PULL_DOWN), 760 758 UNIPHIER_PINCTRL_PIN(245, "VO1D6", UNIPHIER_PIN_IECTRL_NONE, 761 - -1, UNIPHIER_PIN_DRV_FIXED_8, 759 + -1, UNIPHIER_PIN_DRV_FIXED8, 762 760 245, UNIPHIER_PIN_PULL_DOWN), 763 761 UNIPHIER_PINCTRL_PIN(246, "VO1D7", UNIPHIER_PIN_IECTRL_NONE, 764 - -1, UNIPHIER_PIN_DRV_FIXED_8, 762 + -1, UNIPHIER_PIN_DRV_FIXED8, 765 763 246, UNIPHIER_PIN_PULL_DOWN), 766 764 UNIPHIER_PINCTRL_PIN(247, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 767 - -1, UNIPHIER_PIN_DRV_FIXED_8, 765 + -1, UNIPHIER_PIN_DRV_FIXED8, 768 766 247, UNIPHIER_PIN_PULL_UP), 769 767 UNIPHIER_PINCTRL_PIN(248, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 770 - -1, UNIPHIER_PIN_DRV_FIXED_8, 768 + -1, UNIPHIER_PIN_DRV_FIXED8, 771 769 248, UNIPHIER_PIN_PULL_UP), 772 770 UNIPHIER_PINCTRL_PIN(249, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 773 - -1, UNIPHIER_PIN_DRV_FIXED_8, 771 + -1, UNIPHIER_PIN_DRV_FIXED8, 774 772 249, UNIPHIER_PIN_PULL_UP), 775 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 775 -1, UNIPHIER_PIN_PULL_UP_FIXED), 778 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 778 -1, UNIPHIER_PIN_PULL_UP_FIXED), 781 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 781 -1, UNIPHIER_PIN_PULL_UP_FIXED), 784 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 784 -1, UNIPHIER_PIN_PULL_UP_FIXED), 787 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 787 -1, UNIPHIER_PIN_PULL_UP_FIXED), 790 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 790 -1, UNIPHIER_PIN_PULL_UP_FIXED), 793 791 }; 794 792 795 793 static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; 796 - static const unsigned emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0}; 794 + static const int emmc_muxvals[] = {0, 0, 0, 0, 0, 0, 0}; 797 795 static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; 798 - static const unsigned emmc_dat8_muxvals[] = {0, 0, 0, 0}; 796 + static const int emmc_dat8_muxvals[] = {0, 0, 0, 0}; 799 797 static const unsigned i2c0_pins[] = {112, 113}; 800 - static const unsigned i2c0_muxvals[] = {0, 0}; 798 + static const int i2c0_muxvals[] = {0, 0}; 801 799 static const unsigned i2c1_pins[] = {114, 115}; 802 - static const unsigned i2c1_muxvals[] = {0, 0}; 800 + static const int i2c1_muxvals[] = {0, 0}; 803 801 static const unsigned i2c2_pins[] = {116, 117}; 804 - static const unsigned i2c2_muxvals[] = {0, 0}; 802 + static const int i2c2_muxvals[] = {0, 0}; 805 803 static const unsigned i2c3_pins[] = {118, 119}; 806 - static const unsigned i2c3_muxvals[] = {0, 0}; 804 + static const int i2c3_muxvals[] = {0, 0}; 807 805 static const unsigned i2c5_pins[] = {87, 88}; 808 - static const unsigned i2c5_muxvals[] = {2, 2}; 806 + static const int i2c5_muxvals[] = {2, 2}; 809 807 static const unsigned i2c5b_pins[] = {196, 197}; 810 - static const unsigned i2c5b_muxvals[] = {2, 2}; 808 + static const int i2c5b_muxvals[] = {2, 2}; 811 809 static const unsigned i2c5c_pins[] = {215, 216}; 812 - static const unsigned i2c5c_muxvals[] = {2, 2}; 810 + static const int i2c5c_muxvals[] = {2, 2}; 813 811 static const unsigned i2c6_pins[] = {101, 102}; 814 - static const unsigned i2c6_muxvals[] = {2, 2}; 812 + static const int i2c6_muxvals[] = {2, 2}; 815 813 static const unsigned nand_pins[] = {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 816 814 31, 32, 33, 34, 35}; 817 - static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 818 - 0, 0}; 815 + static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 819 816 static const unsigned nand_cs1_pins[] = {26, 27}; 820 - static const unsigned nand_cs1_muxvals[] = {0, 0}; 817 + static const int nand_cs1_muxvals[] = {0, 0}; 821 818 static const unsigned sd_pins[] = {250, 251, 252, 253, 254, 255, 256, 257, 258}; 822 - static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 819 + static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 820 + static const unsigned system_bus_pins[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 821 + 14, 15, 16, 17}; 822 + static const int system_bus_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 823 + 0}; 824 + static const unsigned system_bus_cs0_pins[] = {105}; 825 + static const int system_bus_cs0_muxvals[] = {1}; 826 + static const unsigned system_bus_cs1_pins[] = {18}; 827 + static const int system_bus_cs1_muxvals[] = {0}; 828 + static const unsigned system_bus_cs2_pins[] = {106}; 829 + static const int system_bus_cs2_muxvals[] = {1}; 830 + static const unsigned system_bus_cs3_pins[] = {100}; 831 + static const int system_bus_cs3_muxvals[] = {1}; 832 + static const unsigned system_bus_cs4_pins[] = {101}; 833 + static const int system_bus_cs4_muxvals[] = {1}; 834 + static const unsigned system_bus_cs5_pins[] = {102}; 835 + static const int system_bus_cs5_muxvals[] = {1}; 836 + static const unsigned system_bus_cs6_pins[] = {69}; 837 + static const int system_bus_cs6_muxvals[] = {5}; 838 + static const unsigned system_bus_cs7_pins[] = {70}; 839 + static const int system_bus_cs7_muxvals[] = {5}; 823 840 static const unsigned uart0_pins[] = {47, 48}; 824 - static const unsigned uart0_muxvals[] = {0, 0}; 841 + static const int uart0_muxvals[] = {0, 0}; 825 842 static const unsigned uart0b_pins[] = {227, 228}; 826 - static const unsigned uart0b_muxvals[] = {3, 3}; 843 + static const int uart0b_muxvals[] = {3, 3}; 827 844 static const unsigned uart1_pins[] = {49, 50}; 828 - static const unsigned uart1_muxvals[] = {0, 0}; 845 + static const int uart1_muxvals[] = {0, 0}; 829 846 static const unsigned uart2_pins[] = {51, 52}; 830 - static const unsigned uart2_muxvals[] = {0, 0}; 847 + static const int uart2_muxvals[] = {0, 0}; 831 848 static const unsigned uart3_pins[] = {53, 54}; 832 - static const unsigned uart3_muxvals[] = {0, 0}; 849 + static const int uart3_muxvals[] = {0, 0}; 833 850 static const unsigned usb0_pins[] = {124, 125}; 834 - static const unsigned usb0_muxvals[] = {0, 0}; 851 + static const int usb0_muxvals[] = {0, 0}; 835 852 static const unsigned usb1_pins[] = {126, 127}; 836 - static const unsigned usb1_muxvals[] = {0, 0}; 853 + static const int usb1_muxvals[] = {0, 0}; 837 854 static const unsigned usb2_pins[] = {128, 129}; 838 - static const unsigned usb2_muxvals[] = {0, 0}; 855 + static const int usb2_muxvals[] = {0, 0}; 839 856 static const unsigned port_range0_pins[] = { 840 857 89, 90, 91, 92, 93, 94, 95, 96, /* PORT0x */ 841 858 97, 98, 99, 100, 101, 102, 103, 104, /* PORT1x */ ··· 870 853 179, 180, 181, 182, 186, 187, 188, 189, /* PORT13x */ 871 854 4, 5, 6, 7, 8, 9, 10, 11, /* PORT14x */ 872 855 }; 873 - static const unsigned port_range0_muxvals[] = { 856 + static const int port_range0_muxvals[] = { 874 857 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 875 858 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 876 859 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ ··· 903 886 105, 106, 18, 27, 36, 128, 132, 137, /* PORT29x */ 904 887 183, 184, 185, 84, 47, 48, 51, 52, /* PORT30x */ 905 888 }; 906 - static const unsigned port_range1_muxvals[] = { 889 + static const int port_range1_muxvals[] = { 907 890 15, 15, 15, /* PORT175-177 */ 908 891 15, 15, 15, 15, 15, 15, 15, 15, /* PORT18x */ 909 892 15, 15, 15, 15, 15, 15, 15, 15, /* PORT19x */ ··· 924 907 76, 77, 78, 79, 80, 81, 82, 83, /* XIRQ8-15 */ 925 908 84, 85, 86, 87, 88, /* XIRQ16-20 */ 926 909 }; 927 - static const unsigned xirq_muxvals[] = { 910 + static const int xirq_muxvals[] = { 928 911 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */ 929 912 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */ 930 913 14, 14, 14, 14, 14, /* XIRQ16-20 */ ··· 932 915 static const unsigned xirq_alternatives_pins[] = { 933 916 91, 92, 239, 144, 240, 156, 241, 106, 128, 934 917 }; 935 - static const unsigned xirq_alternatives_muxvals[] = { 918 + static const int xirq_alternatives_muxvals[] = { 936 919 14, 14, 14, 14, 14, 14, 14, 14, 14, 937 920 }; 938 921 939 - static const struct uniphier_pinctrl_group ph1_pro5_groups[] = { 922 + static const struct uniphier_pinctrl_group uniphier_pro5_groups[] = { 940 923 UNIPHIER_PINCTRL_GROUP(nand), 941 924 UNIPHIER_PINCTRL_GROUP(nand_cs1), 942 925 UNIPHIER_PINCTRL_GROUP(emmc), ··· 950 933 UNIPHIER_PINCTRL_GROUP(i2c5c), 951 934 UNIPHIER_PINCTRL_GROUP(i2c6), 952 935 UNIPHIER_PINCTRL_GROUP(sd), 936 + UNIPHIER_PINCTRL_GROUP(system_bus), 937 + UNIPHIER_PINCTRL_GROUP(system_bus_cs0), 938 + UNIPHIER_PINCTRL_GROUP(system_bus_cs1), 939 + UNIPHIER_PINCTRL_GROUP(system_bus_cs2), 940 + UNIPHIER_PINCTRL_GROUP(system_bus_cs3), 941 + UNIPHIER_PINCTRL_GROUP(system_bus_cs4), 942 + UNIPHIER_PINCTRL_GROUP(system_bus_cs5), 943 + UNIPHIER_PINCTRL_GROUP(system_bus_cs6), 944 + UNIPHIER_PINCTRL_GROUP(system_bus_cs7), 953 945 UNIPHIER_PINCTRL_GROUP(uart0), 954 946 UNIPHIER_PINCTRL_GROUP(uart0b), 955 947 UNIPHIER_PINCTRL_GROUP(uart1), ··· 1239 1213 static const char * const i2c6_groups[] = {"i2c6"}; 1240 1214 static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1241 1215 static const char * const sd_groups[] = {"sd"}; 1216 + static const char * const system_bus_groups[] = {"system_bus", 1217 + "system_bus_cs0", 1218 + "system_bus_cs1", 1219 + "system_bus_cs2", 1220 + "system_bus_cs3", 1221 + "system_bus_cs4", 1222 + "system_bus_cs5", 1223 + "system_bus_cs6", 1224 + "system_bus_cs7"}; 1242 1225 static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1243 1226 static const char * const uart1_groups[] = {"uart1"}; 1244 1227 static const char * const uart2_groups[] = {"uart2"}; ··· 1326 1291 "xirq18b", "xirq18c", "xirq19b", "xirq20b", 1327 1292 }; 1328 1293 1329 - static const struct uniphier_pinmux_function ph1_pro5_functions[] = { 1294 + static const struct uniphier_pinmux_function uniphier_pro5_functions[] = { 1330 1295 UNIPHIER_PINMUX_FUNCTION(emmc), 1331 1296 UNIPHIER_PINMUX_FUNCTION(i2c0), 1332 1297 UNIPHIER_PINMUX_FUNCTION(i2c1), ··· 1336 1301 UNIPHIER_PINMUX_FUNCTION(i2c6), 1337 1302 UNIPHIER_PINMUX_FUNCTION(nand), 1338 1303 UNIPHIER_PINMUX_FUNCTION(sd), 1304 + UNIPHIER_PINMUX_FUNCTION(system_bus), 1339 1305 UNIPHIER_PINMUX_FUNCTION(uart0), 1340 1306 UNIPHIER_PINMUX_FUNCTION(uart1), 1341 1307 UNIPHIER_PINMUX_FUNCTION(uart2), ··· 1348 1312 UNIPHIER_PINMUX_FUNCTION(xirq), 1349 1313 }; 1350 1314 1351 - static struct uniphier_pinctrl_socdata ph1_pro5_pindata = { 1352 - .groups = ph1_pro5_groups, 1353 - .groups_count = ARRAY_SIZE(ph1_pro5_groups), 1354 - .functions = ph1_pro5_functions, 1355 - .functions_count = ARRAY_SIZE(ph1_pro5_functions), 1356 - .mux_bits = 4, 1357 - .reg_stride = 8, 1358 - .load_pinctrl = true, 1315 + static struct uniphier_pinctrl_socdata uniphier_pro5_pindata = { 1316 + .pins = uniphier_pro5_pins, 1317 + .npins = ARRAY_SIZE(uniphier_pro5_pins), 1318 + .groups = uniphier_pro5_groups, 1319 + .groups_count = ARRAY_SIZE(uniphier_pro5_groups), 1320 + .functions = uniphier_pro5_functions, 1321 + .functions_count = ARRAY_SIZE(uniphier_pro5_functions), 1322 + .caps = UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE, 1359 1323 }; 1360 1324 1361 - static struct pinctrl_desc ph1_pro5_pinctrl_desc = { 1362 - .name = DRIVER_NAME, 1363 - .pins = ph1_pro5_pins, 1364 - .npins = ARRAY_SIZE(ph1_pro5_pins), 1365 - .owner = THIS_MODULE, 1366 - }; 1367 - 1368 - static int ph1_pro5_pinctrl_probe(struct platform_device *pdev) 1325 + static int uniphier_pro5_pinctrl_probe(struct platform_device *pdev) 1369 1326 { 1370 - return uniphier_pinctrl_probe(pdev, &ph1_pro5_pinctrl_desc, 1371 - &ph1_pro5_pindata); 1327 + return uniphier_pinctrl_probe(pdev, &uniphier_pro5_pindata); 1372 1328 } 1373 1329 1374 - static const struct of_device_id ph1_pro5_pinctrl_match[] = { 1330 + static const struct of_device_id uniphier_pro5_pinctrl_match[] = { 1331 + { .compatible = "socionext,uniphier-pro5-pinctrl" }, 1375 1332 { .compatible = "socionext,ph1-pro5-pinctrl" }, 1376 1333 { /* sentinel */ } 1377 1334 }; 1378 - MODULE_DEVICE_TABLE(of, ph1_pro5_pinctrl_match); 1335 + MODULE_DEVICE_TABLE(of, uniphier_pro5_pinctrl_match); 1379 1336 1380 - static struct platform_driver ph1_pro5_pinctrl_driver = { 1381 - .probe = ph1_pro5_pinctrl_probe, 1337 + static struct platform_driver uniphier_pro5_pinctrl_driver = { 1338 + .probe = uniphier_pro5_pinctrl_probe, 1382 1339 .driver = { 1383 - .name = DRIVER_NAME, 1384 - .of_match_table = ph1_pro5_pinctrl_match, 1340 + .name = "uniphier-pro5-pinctrl", 1341 + .of_match_table = uniphier_pro5_pinctrl_match, 1385 1342 }, 1386 1343 }; 1387 - module_platform_driver(ph1_pro5_pinctrl_driver); 1344 + module_platform_driver(uniphier_pro5_pinctrl_driver); 1388 1345 1389 1346 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1390 1347 MODULE_DESCRIPTION("UniPhier PH1-Pro5 pinctrl driver");
+313 -290
drivers/pinctrl/uniphier/pinctrl-uniphier-pxs2.c
··· 19 19 20 20 #include "pinctrl-uniphier.h" 21 21 22 - #define DRIVER_NAME "proxstream2-pinctrl" 23 - 24 - static const struct pinctrl_pin_desc proxstream2_pins[] = { 22 + static const struct pinctrl_pin_desc uniphier_pxs2_pins[] = { 25 23 UNIPHIER_PINCTRL_PIN(0, "ED0", UNIPHIER_PIN_IECTRL_NONE, 26 - 0, UNIPHIER_PIN_DRV_4_8, 24 + 0, UNIPHIER_PIN_DRV_1BIT, 27 25 0, UNIPHIER_PIN_PULL_DOWN), 28 26 UNIPHIER_PINCTRL_PIN(1, "ED1", UNIPHIER_PIN_IECTRL_NONE, 29 - 1, UNIPHIER_PIN_DRV_4_8, 27 + 1, UNIPHIER_PIN_DRV_1BIT, 30 28 1, UNIPHIER_PIN_PULL_DOWN), 31 29 UNIPHIER_PINCTRL_PIN(2, "ED2", UNIPHIER_PIN_IECTRL_NONE, 32 - 2, UNIPHIER_PIN_DRV_4_8, 30 + 2, UNIPHIER_PIN_DRV_1BIT, 33 31 2, UNIPHIER_PIN_PULL_DOWN), 34 32 UNIPHIER_PINCTRL_PIN(3, "ED3", UNIPHIER_PIN_IECTRL_NONE, 35 - 3, UNIPHIER_PIN_DRV_4_8, 33 + 3, UNIPHIER_PIN_DRV_1BIT, 36 34 3, UNIPHIER_PIN_PULL_DOWN), 37 35 UNIPHIER_PINCTRL_PIN(4, "ED4", UNIPHIER_PIN_IECTRL_NONE, 38 - 4, UNIPHIER_PIN_DRV_4_8, 36 + 4, UNIPHIER_PIN_DRV_1BIT, 39 37 4, UNIPHIER_PIN_PULL_DOWN), 40 38 UNIPHIER_PINCTRL_PIN(5, "ED5", UNIPHIER_PIN_IECTRL_NONE, 41 - 5, UNIPHIER_PIN_DRV_4_8, 39 + 5, UNIPHIER_PIN_DRV_1BIT, 42 40 5, UNIPHIER_PIN_PULL_DOWN), 43 41 UNIPHIER_PINCTRL_PIN(6, "ED6", UNIPHIER_PIN_IECTRL_NONE, 44 - 6, UNIPHIER_PIN_DRV_4_8, 42 + 6, UNIPHIER_PIN_DRV_1BIT, 45 43 6, UNIPHIER_PIN_PULL_DOWN), 46 44 UNIPHIER_PINCTRL_PIN(7, "ED7", UNIPHIER_PIN_IECTRL_NONE, 47 - 7, UNIPHIER_PIN_DRV_4_8, 45 + 7, UNIPHIER_PIN_DRV_1BIT, 48 46 7, UNIPHIER_PIN_PULL_DOWN), 49 47 UNIPHIER_PINCTRL_PIN(8, "XERWE0", UNIPHIER_PIN_IECTRL_NONE, 50 - 8, UNIPHIER_PIN_DRV_4_8, 48 + 8, UNIPHIER_PIN_DRV_1BIT, 51 49 8, UNIPHIER_PIN_PULL_DOWN), 52 50 UNIPHIER_PINCTRL_PIN(9, "XERWE1", UNIPHIER_PIN_IECTRL_NONE, 53 - 9, UNIPHIER_PIN_DRV_4_8, 51 + 9, UNIPHIER_PIN_DRV_1BIT, 54 52 9, UNIPHIER_PIN_PULL_DOWN), 55 53 UNIPHIER_PINCTRL_PIN(10, "ERXW", UNIPHIER_PIN_IECTRL_NONE, 56 - 10, UNIPHIER_PIN_DRV_4_8, 54 + 10, UNIPHIER_PIN_DRV_1BIT, 57 55 10, UNIPHIER_PIN_PULL_DOWN), 58 56 UNIPHIER_PINCTRL_PIN(11, "ES0", UNIPHIER_PIN_IECTRL_NONE, 59 - 11, UNIPHIER_PIN_DRV_4_8, 57 + 11, UNIPHIER_PIN_DRV_1BIT, 60 58 11, UNIPHIER_PIN_PULL_DOWN), 61 59 UNIPHIER_PINCTRL_PIN(12, "ES1", UNIPHIER_PIN_IECTRL_NONE, 62 - 12, UNIPHIER_PIN_DRV_4_8, 60 + 12, UNIPHIER_PIN_DRV_1BIT, 63 61 12, UNIPHIER_PIN_PULL_DOWN), 64 62 UNIPHIER_PINCTRL_PIN(13, "ES2", UNIPHIER_PIN_IECTRL_NONE, 65 - 13, UNIPHIER_PIN_DRV_4_8, 63 + 13, UNIPHIER_PIN_DRV_1BIT, 66 64 13, UNIPHIER_PIN_PULL_DOWN), 67 65 UNIPHIER_PINCTRL_PIN(14, "XECS1", UNIPHIER_PIN_IECTRL_NONE, 68 - 14, UNIPHIER_PIN_DRV_4_8, 66 + 14, UNIPHIER_PIN_DRV_1BIT, 69 67 14, UNIPHIER_PIN_PULL_DOWN), 70 68 UNIPHIER_PINCTRL_PIN(15, "SMTRST0", UNIPHIER_PIN_IECTRL_NONE, 71 - -1, UNIPHIER_PIN_DRV_FIXED_8, 69 + -1, UNIPHIER_PIN_DRV_FIXED8, 72 70 15, UNIPHIER_PIN_PULL_DOWN), 73 71 UNIPHIER_PINCTRL_PIN(16, "SMTCMD0", UNIPHIER_PIN_IECTRL_NONE, 74 - -1, UNIPHIER_PIN_DRV_FIXED_8, 72 + -1, UNIPHIER_PIN_DRV_FIXED8, 75 73 16, UNIPHIER_PIN_PULL_DOWN), 76 74 UNIPHIER_PINCTRL_PIN(17, "SMTD0", UNIPHIER_PIN_IECTRL_NONE, 77 - -1, UNIPHIER_PIN_DRV_FIXED_8, 75 + -1, UNIPHIER_PIN_DRV_FIXED8, 78 76 17, UNIPHIER_PIN_PULL_DOWN), 79 77 UNIPHIER_PINCTRL_PIN(18, "SMTSEL0", UNIPHIER_PIN_IECTRL_NONE, 80 - -1, UNIPHIER_PIN_DRV_FIXED_8, 78 + -1, UNIPHIER_PIN_DRV_FIXED8, 81 79 18, UNIPHIER_PIN_PULL_DOWN), 82 80 UNIPHIER_PINCTRL_PIN(19, "SMTCLK0CG", UNIPHIER_PIN_IECTRL_NONE, 83 - -1, UNIPHIER_PIN_DRV_FIXED_8, 81 + -1, UNIPHIER_PIN_DRV_FIXED8, 84 82 19, UNIPHIER_PIN_PULL_DOWN), 85 83 UNIPHIER_PINCTRL_PIN(20, "SMTDET0", UNIPHIER_PIN_IECTRL_NONE, 86 - -1, UNIPHIER_PIN_DRV_FIXED_8, 84 + -1, UNIPHIER_PIN_DRV_FIXED8, 87 85 20, UNIPHIER_PIN_PULL_DOWN), 88 86 UNIPHIER_PINCTRL_PIN(21, "SMTRST1", UNIPHIER_PIN_IECTRL_NONE, 89 - -1, UNIPHIER_PIN_DRV_FIXED_8, 87 + -1, UNIPHIER_PIN_DRV_FIXED8, 90 88 21, UNIPHIER_PIN_PULL_DOWN), 91 89 UNIPHIER_PINCTRL_PIN(22, "SMTCMD1", UNIPHIER_PIN_IECTRL_NONE, 92 - -1, UNIPHIER_PIN_DRV_FIXED_8, 90 + -1, UNIPHIER_PIN_DRV_FIXED8, 93 91 22, UNIPHIER_PIN_PULL_DOWN), 94 92 UNIPHIER_PINCTRL_PIN(23, "SMTD1", UNIPHIER_PIN_IECTRL_NONE, 95 - -1, UNIPHIER_PIN_DRV_FIXED_8, 93 + -1, UNIPHIER_PIN_DRV_FIXED8, 96 94 23, UNIPHIER_PIN_PULL_DOWN), 97 95 UNIPHIER_PINCTRL_PIN(24, "SMTSEL1", UNIPHIER_PIN_IECTRL_NONE, 98 - -1, UNIPHIER_PIN_DRV_FIXED_8, 96 + -1, UNIPHIER_PIN_DRV_FIXED8, 99 97 24, UNIPHIER_PIN_PULL_DOWN), 100 98 UNIPHIER_PINCTRL_PIN(25, "SMTCLK1CG", UNIPHIER_PIN_IECTRL_NONE, 101 - -1, UNIPHIER_PIN_DRV_FIXED_8, 99 + -1, UNIPHIER_PIN_DRV_FIXED8, 102 100 25, UNIPHIER_PIN_PULL_DOWN), 103 101 UNIPHIER_PINCTRL_PIN(26, "SMTDET1", UNIPHIER_PIN_IECTRL_NONE, 104 - -1, UNIPHIER_PIN_DRV_FIXED_8, 102 + -1, UNIPHIER_PIN_DRV_FIXED8, 105 103 26, UNIPHIER_PIN_PULL_DOWN), 106 104 UNIPHIER_PINCTRL_PIN(27, "XIRQ18", UNIPHIER_PIN_IECTRL_NONE, 107 - -1, UNIPHIER_PIN_DRV_FIXED_8, 105 + -1, UNIPHIER_PIN_DRV_FIXED8, 108 106 27, UNIPHIER_PIN_PULL_DOWN), 109 107 UNIPHIER_PINCTRL_PIN(28, "XIRQ19", UNIPHIER_PIN_IECTRL_NONE, 110 - -1, UNIPHIER_PIN_DRV_FIXED_8, 108 + -1, UNIPHIER_PIN_DRV_FIXED8, 111 109 28, UNIPHIER_PIN_PULL_DOWN), 112 110 UNIPHIER_PINCTRL_PIN(29, "XIRQ20", UNIPHIER_PIN_IECTRL_NONE, 113 - -1, UNIPHIER_PIN_DRV_FIXED_8, 111 + -1, UNIPHIER_PIN_DRV_FIXED8, 114 112 29, UNIPHIER_PIN_PULL_DOWN), 115 113 UNIPHIER_PINCTRL_PIN(30, "XNFRE", UNIPHIER_PIN_IECTRL_NONE, 116 - 30, UNIPHIER_PIN_DRV_4_8, 114 + 30, UNIPHIER_PIN_DRV_1BIT, 117 115 30, UNIPHIER_PIN_PULL_UP), 118 116 UNIPHIER_PINCTRL_PIN(31, "XNFWE", UNIPHIER_PIN_IECTRL_NONE, 119 - 31, UNIPHIER_PIN_DRV_4_8, 117 + 31, UNIPHIER_PIN_DRV_1BIT, 120 118 31, UNIPHIER_PIN_PULL_UP), 121 119 UNIPHIER_PINCTRL_PIN(32, "NFALE", UNIPHIER_PIN_IECTRL_NONE, 122 - 32, UNIPHIER_PIN_DRV_4_8, 120 + 32, UNIPHIER_PIN_DRV_1BIT, 123 121 32, UNIPHIER_PIN_PULL_DOWN), 124 122 UNIPHIER_PINCTRL_PIN(33, "NFCLE", UNIPHIER_PIN_IECTRL_NONE, 125 - 33, UNIPHIER_PIN_DRV_4_8, 123 + 33, UNIPHIER_PIN_DRV_1BIT, 126 124 33, UNIPHIER_PIN_PULL_DOWN), 127 125 UNIPHIER_PINCTRL_PIN(34, "XNFWP", UNIPHIER_PIN_IECTRL_NONE, 128 - 34, UNIPHIER_PIN_DRV_4_8, 126 + 34, UNIPHIER_PIN_DRV_1BIT, 129 127 34, UNIPHIER_PIN_PULL_DOWN), 130 128 UNIPHIER_PINCTRL_PIN(35, "XNFCE0", UNIPHIER_PIN_IECTRL_NONE, 131 - 35, UNIPHIER_PIN_DRV_4_8, 129 + 35, UNIPHIER_PIN_DRV_1BIT, 132 130 35, UNIPHIER_PIN_PULL_UP), 133 131 UNIPHIER_PINCTRL_PIN(36, "NFRYBY0", UNIPHIER_PIN_IECTRL_NONE, 134 - 36, UNIPHIER_PIN_DRV_4_8, 132 + 36, UNIPHIER_PIN_DRV_1BIT, 135 133 36, UNIPHIER_PIN_PULL_UP), 136 134 UNIPHIER_PINCTRL_PIN(37, "XNFCE1", UNIPHIER_PIN_IECTRL_NONE, 137 - 37, UNIPHIER_PIN_DRV_4_8, 135 + 37, UNIPHIER_PIN_DRV_1BIT, 138 136 37, UNIPHIER_PIN_PULL_UP), 139 137 UNIPHIER_PINCTRL_PIN(38, "NFRYBY1", UNIPHIER_PIN_IECTRL_NONE, 140 - 38, UNIPHIER_PIN_DRV_4_8, 138 + 38, UNIPHIER_PIN_DRV_1BIT, 141 139 38, UNIPHIER_PIN_PULL_UP), 142 140 UNIPHIER_PINCTRL_PIN(39, "NFD0", UNIPHIER_PIN_IECTRL_NONE, 143 - 39, UNIPHIER_PIN_DRV_4_8, 141 + 39, UNIPHIER_PIN_DRV_1BIT, 144 142 39, UNIPHIER_PIN_PULL_DOWN), 145 143 UNIPHIER_PINCTRL_PIN(40, "NFD1", UNIPHIER_PIN_IECTRL_NONE, 146 - 40, UNIPHIER_PIN_DRV_4_8, 144 + 40, UNIPHIER_PIN_DRV_1BIT, 147 145 40, UNIPHIER_PIN_PULL_DOWN), 148 146 UNIPHIER_PINCTRL_PIN(41, "NFD2", UNIPHIER_PIN_IECTRL_NONE, 149 - 41, UNIPHIER_PIN_DRV_4_8, 147 + 41, UNIPHIER_PIN_DRV_1BIT, 150 148 41, UNIPHIER_PIN_PULL_DOWN), 151 149 UNIPHIER_PINCTRL_PIN(42, "NFD3", UNIPHIER_PIN_IECTRL_NONE, 152 - 42, UNIPHIER_PIN_DRV_4_8, 150 + 42, UNIPHIER_PIN_DRV_1BIT, 153 151 42, UNIPHIER_PIN_PULL_DOWN), 154 152 UNIPHIER_PINCTRL_PIN(43, "NFD4", UNIPHIER_PIN_IECTRL_NONE, 155 - 43, UNIPHIER_PIN_DRV_4_8, 153 + 43, UNIPHIER_PIN_DRV_1BIT, 156 154 43, UNIPHIER_PIN_PULL_DOWN), 157 155 UNIPHIER_PINCTRL_PIN(44, "NFD5", UNIPHIER_PIN_IECTRL_NONE, 158 - 44, UNIPHIER_PIN_DRV_4_8, 156 + 44, UNIPHIER_PIN_DRV_1BIT, 159 157 44, UNIPHIER_PIN_PULL_DOWN), 160 158 UNIPHIER_PINCTRL_PIN(45, "NFD6", UNIPHIER_PIN_IECTRL_NONE, 161 - 45, UNIPHIER_PIN_DRV_4_8, 159 + 45, UNIPHIER_PIN_DRV_1BIT, 162 160 45, UNIPHIER_PIN_PULL_DOWN), 163 161 UNIPHIER_PINCTRL_PIN(46, "NFD7", UNIPHIER_PIN_IECTRL_NONE, 164 - 46, UNIPHIER_PIN_DRV_4_8, 162 + 46, UNIPHIER_PIN_DRV_1BIT, 165 163 46, UNIPHIER_PIN_PULL_DOWN), 166 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 166 -1, UNIPHIER_PIN_PULL_UP_FIXED), 169 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 169 -1, UNIPHIER_PIN_PULL_UP_FIXED), 172 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 172 -1, UNIPHIER_PIN_PULL_UP_FIXED), 175 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 175 -1, UNIPHIER_PIN_PULL_UP_FIXED), 178 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 178 -1, UNIPHIER_PIN_PULL_UP_FIXED), 181 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 181 -1, UNIPHIER_PIN_PULL_UP_FIXED), 184 182 UNIPHIER_PINCTRL_PIN(53, "SDCD", UNIPHIER_PIN_IECTRL_NONE, 185 - -1, UNIPHIER_PIN_DRV_FIXED_8, 183 + -1, UNIPHIER_PIN_DRV_FIXED8, 186 184 53, UNIPHIER_PIN_PULL_DOWN), 187 185 UNIPHIER_PINCTRL_PIN(54, "SDWP", UNIPHIER_PIN_IECTRL_NONE, 188 - -1, UNIPHIER_PIN_DRV_FIXED_8, 186 + -1, UNIPHIER_PIN_DRV_FIXED8, 189 187 54, UNIPHIER_PIN_PULL_DOWN), 190 188 UNIPHIER_PINCTRL_PIN(55, "SDVOLC", UNIPHIER_PIN_IECTRL_NONE, 191 - -1, UNIPHIER_PIN_DRV_FIXED_8, 189 + -1, UNIPHIER_PIN_DRV_FIXED8, 192 190 55, UNIPHIER_PIN_PULL_DOWN), 193 191 UNIPHIER_PINCTRL_PIN(56, "USB0VBUS", UNIPHIER_PIN_IECTRL_NONE, 194 - -1, UNIPHIER_PIN_DRV_FIXED_8, 192 + -1, UNIPHIER_PIN_DRV_FIXED8, 195 193 56, UNIPHIER_PIN_PULL_DOWN), 196 194 UNIPHIER_PINCTRL_PIN(57, "USB0OD", UNIPHIER_PIN_IECTRL_NONE, 197 - -1, UNIPHIER_PIN_DRV_FIXED_8, 195 + -1, UNIPHIER_PIN_DRV_FIXED8, 198 196 57, UNIPHIER_PIN_PULL_DOWN), 199 197 UNIPHIER_PINCTRL_PIN(58, "USB1VBUS", UNIPHIER_PIN_IECTRL_NONE, 200 - -1, UNIPHIER_PIN_DRV_FIXED_8, 198 + -1, UNIPHIER_PIN_DRV_FIXED8, 201 199 58, UNIPHIER_PIN_PULL_DOWN), 202 200 UNIPHIER_PINCTRL_PIN(59, "USB1OD", UNIPHIER_PIN_IECTRL_NONE, 203 - -1, UNIPHIER_PIN_DRV_FIXED_8, 201 + -1, UNIPHIER_PIN_DRV_FIXED8, 204 202 59, UNIPHIER_PIN_PULL_DOWN), 205 203 UNIPHIER_PINCTRL_PIN(60, "USB2VBUS", UNIPHIER_PIN_IECTRL_NONE, 206 - -1, UNIPHIER_PIN_DRV_FIXED_8, 204 + -1, UNIPHIER_PIN_DRV_FIXED8, 207 205 60, UNIPHIER_PIN_PULL_DOWN), 208 206 UNIPHIER_PINCTRL_PIN(61, "USB2OD", UNIPHIER_PIN_IECTRL_NONE, 209 - -1, UNIPHIER_PIN_DRV_FIXED_8, 207 + -1, UNIPHIER_PIN_DRV_FIXED8, 210 208 61, UNIPHIER_PIN_PULL_DOWN), 211 209 UNIPHIER_PINCTRL_PIN(62, "USB3VBUS", UNIPHIER_PIN_IECTRL_NONE, 212 - -1, UNIPHIER_PIN_DRV_FIXED_8, 210 + -1, UNIPHIER_PIN_DRV_FIXED8, 213 211 62, UNIPHIER_PIN_PULL_DOWN), 214 212 UNIPHIER_PINCTRL_PIN(63, "USB3OD", UNIPHIER_PIN_IECTRL_NONE, 215 - -1, UNIPHIER_PIN_DRV_FIXED_8, 213 + -1, UNIPHIER_PIN_DRV_FIXED8, 216 214 63, UNIPHIER_PIN_PULL_DOWN), 217 215 UNIPHIER_PINCTRL_PIN(64, "CH0CLK", UNIPHIER_PIN_IECTRL_NONE, 218 - -1, UNIPHIER_PIN_DRV_FIXED_8, 216 + -1, UNIPHIER_PIN_DRV_FIXED8, 219 217 64, UNIPHIER_PIN_PULL_DOWN), 220 218 UNIPHIER_PINCTRL_PIN(65, "CH0PSYNC", UNIPHIER_PIN_IECTRL_NONE, 221 - -1, UNIPHIER_PIN_DRV_FIXED_8, 219 + -1, UNIPHIER_PIN_DRV_FIXED8, 222 220 65, UNIPHIER_PIN_PULL_DOWN), 223 221 UNIPHIER_PINCTRL_PIN(66, "CH0VAL", UNIPHIER_PIN_IECTRL_NONE, 224 - -1, UNIPHIER_PIN_DRV_FIXED_8, 222 + -1, UNIPHIER_PIN_DRV_FIXED8, 225 223 66, UNIPHIER_PIN_PULL_DOWN), 226 224 UNIPHIER_PINCTRL_PIN(67, "CH0DATA", UNIPHIER_PIN_IECTRL_NONE, 227 - -1, UNIPHIER_PIN_DRV_FIXED_8, 225 + -1, UNIPHIER_PIN_DRV_FIXED8, 228 226 67, UNIPHIER_PIN_PULL_DOWN), 229 227 UNIPHIER_PINCTRL_PIN(68, "CH1CLK", UNIPHIER_PIN_IECTRL_NONE, 230 - -1, UNIPHIER_PIN_DRV_FIXED_8, 228 + -1, UNIPHIER_PIN_DRV_FIXED8, 231 229 68, UNIPHIER_PIN_PULL_DOWN), 232 230 UNIPHIER_PINCTRL_PIN(69, "CH1PSYNC", UNIPHIER_PIN_IECTRL_NONE, 233 - -1, UNIPHIER_PIN_DRV_FIXED_8, 231 + -1, UNIPHIER_PIN_DRV_FIXED8, 234 232 69, UNIPHIER_PIN_PULL_DOWN), 235 233 UNIPHIER_PINCTRL_PIN(70, "CH1VAL", UNIPHIER_PIN_IECTRL_NONE, 236 - -1, UNIPHIER_PIN_DRV_FIXED_8, 234 + -1, UNIPHIER_PIN_DRV_FIXED8, 237 235 70, UNIPHIER_PIN_PULL_DOWN), 238 236 UNIPHIER_PINCTRL_PIN(71, "CH1DATA", UNIPHIER_PIN_IECTRL_NONE, 239 - -1, UNIPHIER_PIN_DRV_FIXED_8, 237 + -1, UNIPHIER_PIN_DRV_FIXED8, 240 238 71, UNIPHIER_PIN_PULL_DOWN), 241 239 UNIPHIER_PINCTRL_PIN(72, "XIRQ9", UNIPHIER_PIN_IECTRL_NONE, 242 - -1, UNIPHIER_PIN_DRV_FIXED_8, 240 + -1, UNIPHIER_PIN_DRV_FIXED8, 243 241 72, UNIPHIER_PIN_PULL_DOWN), 244 242 UNIPHIER_PINCTRL_PIN(73, "XIRQ10", UNIPHIER_PIN_IECTRL_NONE, 245 - -1, UNIPHIER_PIN_DRV_FIXED_8, 243 + -1, UNIPHIER_PIN_DRV_FIXED8, 246 244 73, UNIPHIER_PIN_PULL_DOWN), 247 245 UNIPHIER_PINCTRL_PIN(74, "XIRQ16", UNIPHIER_PIN_IECTRL_NONE, 248 - -1, UNIPHIER_PIN_DRV_FIXED_8, 246 + -1, UNIPHIER_PIN_DRV_FIXED8, 249 247 74, UNIPHIER_PIN_PULL_DOWN), 250 248 UNIPHIER_PINCTRL_PIN(75, "CH4CLK", UNIPHIER_PIN_IECTRL_NONE, 251 - -1, UNIPHIER_PIN_DRV_FIXED_8, 249 + -1, UNIPHIER_PIN_DRV_FIXED8, 252 250 75, UNIPHIER_PIN_PULL_DOWN), 253 251 UNIPHIER_PINCTRL_PIN(76, "CH4PSYNC", UNIPHIER_PIN_IECTRL_NONE, 254 - -1, UNIPHIER_PIN_DRV_FIXED_8, 252 + -1, UNIPHIER_PIN_DRV_FIXED8, 255 253 76, UNIPHIER_PIN_PULL_DOWN), 256 254 UNIPHIER_PINCTRL_PIN(77, "CH4VAL", UNIPHIER_PIN_IECTRL_NONE, 257 - -1, UNIPHIER_PIN_DRV_FIXED_8, 255 + -1, UNIPHIER_PIN_DRV_FIXED8, 258 256 77, UNIPHIER_PIN_PULL_DOWN), 259 257 UNIPHIER_PINCTRL_PIN(78, "CH4DATA", UNIPHIER_PIN_IECTRL_NONE, 260 - -1, UNIPHIER_PIN_DRV_FIXED_8, 258 + -1, UNIPHIER_PIN_DRV_FIXED8, 261 259 78, UNIPHIER_PIN_PULL_DOWN), 262 260 UNIPHIER_PINCTRL_PIN(79, "CH5CLK", UNIPHIER_PIN_IECTRL_NONE, 263 - -1, UNIPHIER_PIN_DRV_FIXED_8, 261 + -1, UNIPHIER_PIN_DRV_FIXED8, 264 262 79, UNIPHIER_PIN_PULL_DOWN), 265 263 UNIPHIER_PINCTRL_PIN(80, "CH5PSYNC", UNIPHIER_PIN_IECTRL_NONE, 266 - -1, UNIPHIER_PIN_DRV_FIXED_8, 264 + -1, UNIPHIER_PIN_DRV_FIXED8, 267 265 80, UNIPHIER_PIN_PULL_DOWN), 268 266 UNIPHIER_PINCTRL_PIN(81, "CH5VAL", UNIPHIER_PIN_IECTRL_NONE, 269 - -1, UNIPHIER_PIN_DRV_FIXED_8, 267 + -1, UNIPHIER_PIN_DRV_FIXED8, 270 268 81, UNIPHIER_PIN_PULL_DOWN), 271 269 UNIPHIER_PINCTRL_PIN(82, "CH5DATA", UNIPHIER_PIN_IECTRL_NONE, 272 - -1, UNIPHIER_PIN_DRV_FIXED_8, 270 + -1, UNIPHIER_PIN_DRV_FIXED8, 273 271 82, UNIPHIER_PIN_PULL_DOWN), 274 272 UNIPHIER_PINCTRL_PIN(83, "CH6CLK", UNIPHIER_PIN_IECTRL_NONE, 275 - -1, UNIPHIER_PIN_DRV_FIXED_8, 273 + -1, UNIPHIER_PIN_DRV_FIXED8, 276 274 83, UNIPHIER_PIN_PULL_DOWN), 277 275 UNIPHIER_PINCTRL_PIN(84, "CH6PSYNC", UNIPHIER_PIN_IECTRL_NONE, 278 - -1, UNIPHIER_PIN_DRV_FIXED_8, 276 + -1, UNIPHIER_PIN_DRV_FIXED8, 279 277 84, UNIPHIER_PIN_PULL_DOWN), 280 278 UNIPHIER_PINCTRL_PIN(85, "CH6VAL", UNIPHIER_PIN_IECTRL_NONE, 281 - -1, UNIPHIER_PIN_DRV_FIXED_8, 279 + -1, UNIPHIER_PIN_DRV_FIXED8, 282 280 85, UNIPHIER_PIN_PULL_DOWN), 283 281 UNIPHIER_PINCTRL_PIN(86, "CH6DATA", UNIPHIER_PIN_IECTRL_NONE, 284 - -1, UNIPHIER_PIN_DRV_FIXED_8, 282 + -1, UNIPHIER_PIN_DRV_FIXED8, 285 283 86, UNIPHIER_PIN_PULL_DOWN), 286 284 UNIPHIER_PINCTRL_PIN(87, "STS0CLKO", UNIPHIER_PIN_IECTRL_NONE, 287 - -1, UNIPHIER_PIN_DRV_FIXED_8, 285 + -1, UNIPHIER_PIN_DRV_FIXED8, 288 286 87, UNIPHIER_PIN_PULL_DOWN), 289 287 UNIPHIER_PINCTRL_PIN(88, "STS0SYNCO", UNIPHIER_PIN_IECTRL_NONE, 290 - -1, UNIPHIER_PIN_DRV_FIXED_8, 288 + -1, UNIPHIER_PIN_DRV_FIXED8, 291 289 88, UNIPHIER_PIN_PULL_DOWN), 292 290 UNIPHIER_PINCTRL_PIN(89, "STS0VALO", UNIPHIER_PIN_IECTRL_NONE, 293 - -1, UNIPHIER_PIN_DRV_FIXED_8, 291 + -1, UNIPHIER_PIN_DRV_FIXED8, 294 292 89, UNIPHIER_PIN_PULL_DOWN), 295 293 UNIPHIER_PINCTRL_PIN(90, "STS0DATAO", UNIPHIER_PIN_IECTRL_NONE, 296 - -1, UNIPHIER_PIN_DRV_FIXED_8, 294 + -1, UNIPHIER_PIN_DRV_FIXED8, 297 295 90, UNIPHIER_PIN_PULL_DOWN), 298 296 UNIPHIER_PINCTRL_PIN(91, "XIRQ17", UNIPHIER_PIN_IECTRL_NONE, 299 - -1, UNIPHIER_PIN_DRV_FIXED_8, 297 + -1, UNIPHIER_PIN_DRV_FIXED8, 300 298 91, UNIPHIER_PIN_PULL_DOWN), 301 299 UNIPHIER_PINCTRL_PIN(92, "PORT163", UNIPHIER_PIN_IECTRL_NONE, 302 - -1, UNIPHIER_PIN_DRV_FIXED_8, 300 + -1, UNIPHIER_PIN_DRV_FIXED8, 303 301 92, UNIPHIER_PIN_PULL_DOWN), 304 302 UNIPHIER_PINCTRL_PIN(93, "PORT165", UNIPHIER_PIN_IECTRL_NONE, 305 - -1, UNIPHIER_PIN_DRV_FIXED_8, 303 + -1, UNIPHIER_PIN_DRV_FIXED8, 306 304 93, UNIPHIER_PIN_PULL_DOWN), 307 305 UNIPHIER_PINCTRL_PIN(94, "PORT166", UNIPHIER_PIN_IECTRL_NONE, 308 - -1, UNIPHIER_PIN_DRV_FIXED_8, 306 + -1, UNIPHIER_PIN_DRV_FIXED8, 309 307 94, UNIPHIER_PIN_PULL_DOWN), 310 308 UNIPHIER_PINCTRL_PIN(95, "PORT132", UNIPHIER_PIN_IECTRL_NONE, 311 - -1, UNIPHIER_PIN_DRV_FIXED_8, 309 + -1, UNIPHIER_PIN_DRV_FIXED8, 312 310 95, UNIPHIER_PIN_PULL_DOWN), 313 311 UNIPHIER_PINCTRL_PIN(96, "PORT133", UNIPHIER_PIN_IECTRL_NONE, 314 - -1, UNIPHIER_PIN_DRV_FIXED_8, 312 + -1, UNIPHIER_PIN_DRV_FIXED8, 315 313 96, UNIPHIER_PIN_PULL_DOWN), 316 314 UNIPHIER_PINCTRL_PIN(97, "AO2IEC", UNIPHIER_PIN_IECTRL_NONE, 317 - -1, UNIPHIER_PIN_DRV_FIXED_8, 315 + -1, UNIPHIER_PIN_DRV_FIXED8, 318 316 97, UNIPHIER_PIN_PULL_DOWN), 319 317 UNIPHIER_PINCTRL_PIN(98, "AI2ADCCK", UNIPHIER_PIN_IECTRL_NONE, 320 - -1, UNIPHIER_PIN_DRV_FIXED_8, 318 + -1, UNIPHIER_PIN_DRV_FIXED8, 321 319 98, UNIPHIER_PIN_PULL_DOWN), 322 320 UNIPHIER_PINCTRL_PIN(99, "AI2BCK", UNIPHIER_PIN_IECTRL_NONE, 323 - -1, UNIPHIER_PIN_DRV_FIXED_8, 321 + -1, UNIPHIER_PIN_DRV_FIXED8, 324 322 99, UNIPHIER_PIN_PULL_DOWN), 325 323 UNIPHIER_PINCTRL_PIN(100, "AI2LRCK", UNIPHIER_PIN_IECTRL_NONE, 326 - -1, UNIPHIER_PIN_DRV_FIXED_8, 324 + -1, UNIPHIER_PIN_DRV_FIXED8, 327 325 100, UNIPHIER_PIN_PULL_DOWN), 328 326 UNIPHIER_PINCTRL_PIN(101, "AI2D0", UNIPHIER_PIN_IECTRL_NONE, 329 - -1, UNIPHIER_PIN_DRV_FIXED_8, 327 + -1, UNIPHIER_PIN_DRV_FIXED8, 330 328 101, UNIPHIER_PIN_PULL_DOWN), 331 329 UNIPHIER_PINCTRL_PIN(102, "AI2D1", UNIPHIER_PIN_IECTRL_NONE, 332 - -1, UNIPHIER_PIN_DRV_FIXED_8, 330 + -1, UNIPHIER_PIN_DRV_FIXED8, 333 331 102, UNIPHIER_PIN_PULL_DOWN), 334 332 UNIPHIER_PINCTRL_PIN(103, "AI2D2", UNIPHIER_PIN_IECTRL_NONE, 335 - -1, UNIPHIER_PIN_DRV_FIXED_8, 333 + -1, UNIPHIER_PIN_DRV_FIXED8, 336 334 103, UNIPHIER_PIN_PULL_DOWN), 337 335 UNIPHIER_PINCTRL_PIN(104, "AI2D3", UNIPHIER_PIN_IECTRL_NONE, 338 - -1, UNIPHIER_PIN_DRV_FIXED_8, 336 + -1, UNIPHIER_PIN_DRV_FIXED8, 339 337 104, UNIPHIER_PIN_PULL_DOWN), 340 338 UNIPHIER_PINCTRL_PIN(105, "AO3DACCK", UNIPHIER_PIN_IECTRL_NONE, 341 - -1, UNIPHIER_PIN_DRV_FIXED_8, 339 + -1, UNIPHIER_PIN_DRV_FIXED8, 342 340 105, UNIPHIER_PIN_PULL_DOWN), 343 341 UNIPHIER_PINCTRL_PIN(106, "AO3BCK", UNIPHIER_PIN_IECTRL_NONE, 344 - -1, UNIPHIER_PIN_DRV_FIXED_8, 342 + -1, UNIPHIER_PIN_DRV_FIXED8, 345 343 106, UNIPHIER_PIN_PULL_DOWN), 346 344 UNIPHIER_PINCTRL_PIN(107, "AO3LRCK", UNIPHIER_PIN_IECTRL_NONE, 347 - -1, UNIPHIER_PIN_DRV_FIXED_8, 345 + -1, UNIPHIER_PIN_DRV_FIXED8, 348 346 107, UNIPHIER_PIN_PULL_DOWN), 349 347 UNIPHIER_PINCTRL_PIN(108, "AO3DMIX", UNIPHIER_PIN_IECTRL_NONE, 350 - -1, UNIPHIER_PIN_DRV_FIXED_8, 348 + -1, UNIPHIER_PIN_DRV_FIXED8, 351 349 108, UNIPHIER_PIN_PULL_DOWN), 352 350 UNIPHIER_PINCTRL_PIN(109, "SDA0", UNIPHIER_PIN_IECTRL_NONE, 353 - -1, UNIPHIER_PIN_DRV_FIXED_8, 351 + -1, UNIPHIER_PIN_DRV_FIXED8, 354 352 109, UNIPHIER_PIN_PULL_DOWN), 355 353 UNIPHIER_PINCTRL_PIN(110, "SCL0", UNIPHIER_PIN_IECTRL_NONE, 356 - -1, UNIPHIER_PIN_DRV_FIXED_8, 354 + -1, UNIPHIER_PIN_DRV_FIXED8, 357 355 110, UNIPHIER_PIN_PULL_DOWN), 358 356 UNIPHIER_PINCTRL_PIN(111, "SDA1", UNIPHIER_PIN_IECTRL_NONE, 359 - -1, UNIPHIER_PIN_DRV_FIXED_8, 357 + -1, UNIPHIER_PIN_DRV_FIXED8, 360 358 111, UNIPHIER_PIN_PULL_DOWN), 361 359 UNIPHIER_PINCTRL_PIN(112, "SCL1", UNIPHIER_PIN_IECTRL_NONE, 362 - -1, UNIPHIER_PIN_DRV_FIXED_8, 360 + -1, UNIPHIER_PIN_DRV_FIXED8, 363 361 112, UNIPHIER_PIN_PULL_DOWN), 364 362 UNIPHIER_PINCTRL_PIN(113, "TXD2", 0, 365 - 113, UNIPHIER_PIN_DRV_4_8, 363 + 113, UNIPHIER_PIN_DRV_1BIT, 366 364 113, UNIPHIER_PIN_PULL_UP), 367 365 UNIPHIER_PINCTRL_PIN(114, "RXD2", 0, 368 - 114, UNIPHIER_PIN_DRV_4_8, 366 + 114, UNIPHIER_PIN_DRV_1BIT, 369 367 114, UNIPHIER_PIN_PULL_UP), 370 368 UNIPHIER_PINCTRL_PIN(115, "TXD1", 0, 371 - 115, UNIPHIER_PIN_DRV_4_8, 369 + 115, UNIPHIER_PIN_DRV_1BIT, 372 370 115, UNIPHIER_PIN_PULL_UP), 373 371 UNIPHIER_PINCTRL_PIN(116, "RXD1", 0, 374 - 116, UNIPHIER_PIN_DRV_4_8, 372 + 116, UNIPHIER_PIN_DRV_1BIT, 375 373 116, UNIPHIER_PIN_PULL_UP), 376 374 UNIPHIER_PINCTRL_PIN(117, "PORT190", UNIPHIER_PIN_IECTRL_NONE, 377 - -1, UNIPHIER_PIN_DRV_FIXED_8, 375 + -1, UNIPHIER_PIN_DRV_FIXED8, 378 376 117, UNIPHIER_PIN_PULL_DOWN), 379 377 UNIPHIER_PINCTRL_PIN(118, "VI1HSYNC", UNIPHIER_PIN_IECTRL_NONE, 380 - -1, UNIPHIER_PIN_DRV_FIXED_8, 378 + -1, UNIPHIER_PIN_DRV_FIXED8, 381 379 118, UNIPHIER_PIN_PULL_DOWN), 382 380 UNIPHIER_PINCTRL_PIN(119, "VI1VSYNC", UNIPHIER_PIN_IECTRL_NONE, 383 - -1, UNIPHIER_PIN_DRV_FIXED_8, 381 + -1, UNIPHIER_PIN_DRV_FIXED8, 384 382 119, UNIPHIER_PIN_PULL_DOWN), 385 383 UNIPHIER_PINCTRL_PIN(120, "VI1DE", UNIPHIER_PIN_IECTRL_NONE, 386 - -1, UNIPHIER_PIN_DRV_FIXED_8, 384 + -1, UNIPHIER_PIN_DRV_FIXED8, 387 385 120, UNIPHIER_PIN_PULL_DOWN), 388 386 UNIPHIER_PINCTRL_PIN(121, "XIRQ3", UNIPHIER_PIN_IECTRL_NONE, 389 - -1, UNIPHIER_PIN_DRV_FIXED_8, 387 + -1, UNIPHIER_PIN_DRV_FIXED8, 390 388 121, UNIPHIER_PIN_PULL_DOWN), 391 389 UNIPHIER_PINCTRL_PIN(122, "XIRQ4", UNIPHIER_PIN_IECTRL_NONE, 392 - -1, UNIPHIER_PIN_DRV_FIXED_8, 390 + -1, UNIPHIER_PIN_DRV_FIXED8, 393 391 122, UNIPHIER_PIN_PULL_DOWN), 394 392 UNIPHIER_PINCTRL_PIN(123, "VI1G2", UNIPHIER_PIN_IECTRL_NONE, 395 - -1, UNIPHIER_PIN_DRV_FIXED_8, 393 + -1, UNIPHIER_PIN_DRV_FIXED8, 396 394 123, UNIPHIER_PIN_PULL_DOWN), 397 395 UNIPHIER_PINCTRL_PIN(124, "VI1G3", UNIPHIER_PIN_IECTRL_NONE, 398 - -1, UNIPHIER_PIN_DRV_FIXED_8, 396 + -1, UNIPHIER_PIN_DRV_FIXED8, 399 397 124, UNIPHIER_PIN_PULL_DOWN), 400 398 UNIPHIER_PINCTRL_PIN(125, "VI1G4", UNIPHIER_PIN_IECTRL_NONE, 401 - -1, UNIPHIER_PIN_DRV_FIXED_8, 399 + -1, UNIPHIER_PIN_DRV_FIXED8, 402 400 125, UNIPHIER_PIN_PULL_DOWN), 403 401 UNIPHIER_PINCTRL_PIN(126, "VI1G5", UNIPHIER_PIN_IECTRL_NONE, 404 - -1, UNIPHIER_PIN_DRV_FIXED_8, 402 + -1, UNIPHIER_PIN_DRV_FIXED8, 405 403 126, UNIPHIER_PIN_PULL_DOWN), 406 404 UNIPHIER_PINCTRL_PIN(127, "VI1G6", UNIPHIER_PIN_IECTRL_NONE, 407 - -1, UNIPHIER_PIN_DRV_FIXED_8, 405 + -1, UNIPHIER_PIN_DRV_FIXED8, 408 406 127, UNIPHIER_PIN_PULL_DOWN), 409 407 UNIPHIER_PINCTRL_PIN(128, "VI1G7", UNIPHIER_PIN_IECTRL_NONE, 410 - -1, UNIPHIER_PIN_DRV_FIXED_8, 408 + -1, UNIPHIER_PIN_DRV_FIXED8, 411 409 128, UNIPHIER_PIN_PULL_DOWN), 412 410 UNIPHIER_PINCTRL_PIN(129, "VI1G8", UNIPHIER_PIN_IECTRL_NONE, 413 - -1, UNIPHIER_PIN_DRV_FIXED_8, 411 + -1, UNIPHIER_PIN_DRV_FIXED8, 414 412 129, UNIPHIER_PIN_PULL_DOWN), 415 413 UNIPHIER_PINCTRL_PIN(130, "VI1G9", UNIPHIER_PIN_IECTRL_NONE, 416 - -1, UNIPHIER_PIN_DRV_FIXED_8, 414 + -1, UNIPHIER_PIN_DRV_FIXED8, 417 415 130, UNIPHIER_PIN_PULL_DOWN), 418 416 UNIPHIER_PINCTRL_PIN(131, "VI1CLK", UNIPHIER_PIN_IECTRL_NONE, 419 - -1, UNIPHIER_PIN_DRV_FIXED_8, 417 + -1, UNIPHIER_PIN_DRV_FIXED8, 420 418 131, UNIPHIER_PIN_PULL_DOWN), 421 419 UNIPHIER_PINCTRL_PIN(132, "PORT05", UNIPHIER_PIN_IECTRL_NONE, 422 - -1, UNIPHIER_PIN_DRV_FIXED_8, 420 + -1, UNIPHIER_PIN_DRV_FIXED8, 423 421 132, UNIPHIER_PIN_PULL_DOWN), 424 422 UNIPHIER_PINCTRL_PIN(133, "PORT06", UNIPHIER_PIN_IECTRL_NONE, 425 - -1, UNIPHIER_PIN_DRV_FIXED_8, 423 + -1, UNIPHIER_PIN_DRV_FIXED8, 426 424 133, UNIPHIER_PIN_PULL_DOWN), 427 425 UNIPHIER_PINCTRL_PIN(134, "VI1R2", UNIPHIER_PIN_IECTRL_NONE, 428 - -1, UNIPHIER_PIN_DRV_FIXED_8, 426 + -1, UNIPHIER_PIN_DRV_FIXED8, 429 427 134, UNIPHIER_PIN_PULL_DOWN), 430 428 UNIPHIER_PINCTRL_PIN(135, "VI1R3", UNIPHIER_PIN_IECTRL_NONE, 431 - -1, UNIPHIER_PIN_DRV_FIXED_8, 429 + -1, UNIPHIER_PIN_DRV_FIXED8, 432 430 135, UNIPHIER_PIN_PULL_DOWN), 433 431 UNIPHIER_PINCTRL_PIN(136, "VI1R4", UNIPHIER_PIN_IECTRL_NONE, 434 - -1, UNIPHIER_PIN_DRV_FIXED_8, 432 + -1, UNIPHIER_PIN_DRV_FIXED8, 435 433 136, UNIPHIER_PIN_PULL_DOWN), 436 434 UNIPHIER_PINCTRL_PIN(137, "VI1R5", UNIPHIER_PIN_IECTRL_NONE, 437 - -1, UNIPHIER_PIN_DRV_FIXED_8, 435 + -1, UNIPHIER_PIN_DRV_FIXED8, 438 436 137, UNIPHIER_PIN_PULL_DOWN), 439 437 UNIPHIER_PINCTRL_PIN(138, "VI1R6", UNIPHIER_PIN_IECTRL_NONE, 440 - -1, UNIPHIER_PIN_DRV_FIXED_8, 438 + -1, UNIPHIER_PIN_DRV_FIXED8, 441 439 138, UNIPHIER_PIN_PULL_DOWN), 442 440 UNIPHIER_PINCTRL_PIN(139, "VI1R7", UNIPHIER_PIN_IECTRL_NONE, 443 - -1, UNIPHIER_PIN_DRV_FIXED_8, 441 + -1, UNIPHIER_PIN_DRV_FIXED8, 444 442 139, UNIPHIER_PIN_PULL_DOWN), 445 443 UNIPHIER_PINCTRL_PIN(140, "VI1R8", UNIPHIER_PIN_IECTRL_NONE, 446 - -1, UNIPHIER_PIN_DRV_FIXED_8, 444 + -1, UNIPHIER_PIN_DRV_FIXED8, 447 445 140, UNIPHIER_PIN_PULL_DOWN), 448 446 UNIPHIER_PINCTRL_PIN(141, "VI1R9", UNIPHIER_PIN_IECTRL_NONE, 449 - -1, UNIPHIER_PIN_DRV_FIXED_8, 447 + -1, UNIPHIER_PIN_DRV_FIXED8, 450 448 141, UNIPHIER_PIN_PULL_DOWN), 451 449 UNIPHIER_PINCTRL_PIN(142, "LPST", UNIPHIER_PIN_IECTRL_NONE, 452 - 142, UNIPHIER_PIN_DRV_4_8, 450 + 142, UNIPHIER_PIN_DRV_1BIT, 453 451 142, UNIPHIER_PIN_PULL_DOWN), 454 452 UNIPHIER_PINCTRL_PIN(143, "MDC", 0, 455 - 143, UNIPHIER_PIN_DRV_4_8, 453 + 143, UNIPHIER_PIN_DRV_1BIT, 456 454 143, UNIPHIER_PIN_PULL_DOWN), 457 455 UNIPHIER_PINCTRL_PIN(144, "MDIO", 0, 458 - 144, UNIPHIER_PIN_DRV_4_8, 456 + 144, UNIPHIER_PIN_DRV_1BIT, 459 457 144, UNIPHIER_PIN_PULL_DOWN), 460 458 UNIPHIER_PINCTRL_PIN(145, "MDIO_INTL", 0, 461 - 145, UNIPHIER_PIN_DRV_4_8, 459 + 145, UNIPHIER_PIN_DRV_1BIT, 462 460 145, UNIPHIER_PIN_PULL_DOWN), 463 461 UNIPHIER_PINCTRL_PIN(146, "PHYRSTL", 0, 464 - 146, UNIPHIER_PIN_DRV_4_8, 462 + 146, UNIPHIER_PIN_DRV_1BIT, 465 463 146, UNIPHIER_PIN_PULL_DOWN), 466 464 UNIPHIER_PINCTRL_PIN(147, "RGMII_RXCLK", 0, 467 - 147, UNIPHIER_PIN_DRV_4_8, 465 + 147, UNIPHIER_PIN_DRV_1BIT, 468 466 147, UNIPHIER_PIN_PULL_DOWN), 469 467 UNIPHIER_PINCTRL_PIN(148, "RGMII_RXD0", 0, 470 - 148, UNIPHIER_PIN_DRV_4_8, 468 + 148, UNIPHIER_PIN_DRV_1BIT, 471 469 148, UNIPHIER_PIN_PULL_DOWN), 472 470 UNIPHIER_PINCTRL_PIN(149, "RGMII_RXD1", 0, 473 - 149, UNIPHIER_PIN_DRV_4_8, 471 + 149, UNIPHIER_PIN_DRV_1BIT, 474 472 149, UNIPHIER_PIN_PULL_DOWN), 475 473 UNIPHIER_PINCTRL_PIN(150, "RGMII_RXD2", 0, 476 - 150, UNIPHIER_PIN_DRV_4_8, 474 + 150, UNIPHIER_PIN_DRV_1BIT, 477 475 150, UNIPHIER_PIN_PULL_DOWN), 478 476 UNIPHIER_PINCTRL_PIN(151, "RGMII_RXD3", 0, 479 - 151, UNIPHIER_PIN_DRV_4_8, 477 + 151, UNIPHIER_PIN_DRV_1BIT, 480 478 151, UNIPHIER_PIN_PULL_DOWN), 481 479 UNIPHIER_PINCTRL_PIN(152, "RGMII_RXCTL", 0, 482 - 152, UNIPHIER_PIN_DRV_4_8, 480 + 152, UNIPHIER_PIN_DRV_1BIT, 483 481 152, UNIPHIER_PIN_PULL_DOWN), 484 482 UNIPHIER_PINCTRL_PIN(153, "RGMII_TXCLK", 0, 485 - 153, UNIPHIER_PIN_DRV_4_8, 483 + 153, UNIPHIER_PIN_DRV_1BIT, 486 484 153, UNIPHIER_PIN_PULL_DOWN), 487 485 UNIPHIER_PINCTRL_PIN(154, "RGMII_TXD0", 0, 488 - 154, UNIPHIER_PIN_DRV_4_8, 486 + 154, UNIPHIER_PIN_DRV_1BIT, 489 487 154, UNIPHIER_PIN_PULL_DOWN), 490 488 UNIPHIER_PINCTRL_PIN(155, "RGMII_TXD1", 0, 491 - 155, UNIPHIER_PIN_DRV_4_8, 489 + 155, UNIPHIER_PIN_DRV_1BIT, 492 490 155, UNIPHIER_PIN_PULL_DOWN), 493 491 UNIPHIER_PINCTRL_PIN(156, "RGMII_TXD2", 0, 494 - 156, UNIPHIER_PIN_DRV_4_8, 492 + 156, UNIPHIER_PIN_DRV_1BIT, 495 493 156, UNIPHIER_PIN_PULL_DOWN), 496 494 UNIPHIER_PINCTRL_PIN(157, "RGMII_TXD3", 0, 497 - 157, UNIPHIER_PIN_DRV_4_8, 495 + 157, UNIPHIER_PIN_DRV_1BIT, 498 496 157, UNIPHIER_PIN_PULL_DOWN), 499 497 UNIPHIER_PINCTRL_PIN(158, "RGMII_TXCTL", 0, 500 - 158, UNIPHIER_PIN_DRV_4_8, 498 + 158, UNIPHIER_PIN_DRV_1BIT, 501 499 158, UNIPHIER_PIN_PULL_DOWN), 502 500 UNIPHIER_PINCTRL_PIN(159, "SDA3", UNIPHIER_PIN_IECTRL_NONE, 503 - -1, UNIPHIER_PIN_DRV_FIXED_8, 501 + -1, UNIPHIER_PIN_DRV_FIXED8, 504 502 159, UNIPHIER_PIN_PULL_DOWN), 505 503 UNIPHIER_PINCTRL_PIN(160, "SCL3", UNIPHIER_PIN_IECTRL_NONE, 506 - -1, UNIPHIER_PIN_DRV_FIXED_8, 504 + -1, UNIPHIER_PIN_DRV_FIXED8, 507 505 160, UNIPHIER_PIN_PULL_DOWN), 508 506 UNIPHIER_PINCTRL_PIN(161, "AI1ADCCK", UNIPHIER_PIN_IECTRL_NONE, 509 - -1, UNIPHIER_PIN_DRV_FIXED_8, 507 + -1, UNIPHIER_PIN_DRV_FIXED8, 510 508 161, UNIPHIER_PIN_PULL_DOWN), 511 509 UNIPHIER_PINCTRL_PIN(162, "AI1BCK", UNIPHIER_PIN_IECTRL_NONE, 512 - -1, UNIPHIER_PIN_DRV_FIXED_8, 510 + -1, UNIPHIER_PIN_DRV_FIXED8, 513 511 162, UNIPHIER_PIN_PULL_DOWN), 514 512 UNIPHIER_PINCTRL_PIN(163, "CH2CLK", UNIPHIER_PIN_IECTRL_NONE, 515 - -1, UNIPHIER_PIN_DRV_FIXED_8, 513 + -1, UNIPHIER_PIN_DRV_FIXED8, 516 514 163, UNIPHIER_PIN_PULL_DOWN), 517 515 UNIPHIER_PINCTRL_PIN(164, "CH2PSYNC", UNIPHIER_PIN_IECTRL_NONE, 518 - -1, UNIPHIER_PIN_DRV_FIXED_8, 516 + -1, UNIPHIER_PIN_DRV_FIXED8, 519 517 164, UNIPHIER_PIN_PULL_DOWN), 520 518 UNIPHIER_PINCTRL_PIN(165, "CH2VAL", UNIPHIER_PIN_IECTRL_NONE, 521 - -1, UNIPHIER_PIN_DRV_FIXED_8, 519 + -1, UNIPHIER_PIN_DRV_FIXED8, 522 520 165, UNIPHIER_PIN_PULL_DOWN), 523 521 UNIPHIER_PINCTRL_PIN(166, "CH2DATA", UNIPHIER_PIN_IECTRL_NONE, 524 - -1, UNIPHIER_PIN_DRV_FIXED_8, 522 + -1, UNIPHIER_PIN_DRV_FIXED8, 525 523 166, UNIPHIER_PIN_PULL_DOWN), 526 524 UNIPHIER_PINCTRL_PIN(167, "CH3CLK", UNIPHIER_PIN_IECTRL_NONE, 527 - -1, UNIPHIER_PIN_DRV_FIXED_8, 525 + -1, UNIPHIER_PIN_DRV_FIXED8, 528 526 167, UNIPHIER_PIN_PULL_DOWN), 529 527 UNIPHIER_PINCTRL_PIN(168, "CH3PSYNC", UNIPHIER_PIN_IECTRL_NONE, 530 - -1, UNIPHIER_PIN_DRV_FIXED_8, 528 + -1, UNIPHIER_PIN_DRV_FIXED8, 531 529 168, UNIPHIER_PIN_PULL_DOWN), 532 530 UNIPHIER_PINCTRL_PIN(169, "CH3VAL", UNIPHIER_PIN_IECTRL_NONE, 533 - -1, UNIPHIER_PIN_DRV_FIXED_8, 531 + -1, UNIPHIER_PIN_DRV_FIXED8, 534 532 169, UNIPHIER_PIN_PULL_DOWN), 535 533 UNIPHIER_PINCTRL_PIN(170, "CH3DATA", UNIPHIER_PIN_IECTRL_NONE, 536 - -1, UNIPHIER_PIN_DRV_FIXED_8, 534 + -1, UNIPHIER_PIN_DRV_FIXED8, 537 535 170, UNIPHIER_PIN_PULL_DOWN), 538 536 UNIPHIER_PINCTRL_PIN(171, "SDA2", UNIPHIER_PIN_IECTRL_NONE, 539 - -1, UNIPHIER_PIN_DRV_FIXED_8, 537 + -1, UNIPHIER_PIN_DRV_FIXED8, 540 538 171, UNIPHIER_PIN_PULL_DOWN), 541 539 UNIPHIER_PINCTRL_PIN(172, "SCL2", UNIPHIER_PIN_IECTRL_NONE, 542 - -1, UNIPHIER_PIN_DRV_FIXED_8, 540 + -1, UNIPHIER_PIN_DRV_FIXED8, 543 541 172, UNIPHIER_PIN_PULL_DOWN), 544 542 UNIPHIER_PINCTRL_PIN(173, "AI1LRCK", UNIPHIER_PIN_IECTRL_NONE, 545 - -1, UNIPHIER_PIN_DRV_FIXED_8, 543 + -1, UNIPHIER_PIN_DRV_FIXED8, 546 544 173, UNIPHIER_PIN_PULL_DOWN), 547 545 UNIPHIER_PINCTRL_PIN(174, "AI1D0", UNIPHIER_PIN_IECTRL_NONE, 548 - -1, UNIPHIER_PIN_DRV_FIXED_8, 546 + -1, UNIPHIER_PIN_DRV_FIXED8, 549 547 174, UNIPHIER_PIN_PULL_DOWN), 550 548 UNIPHIER_PINCTRL_PIN(175, "AO2LRCK", UNIPHIER_PIN_IECTRL_NONE, 551 - -1, UNIPHIER_PIN_DRV_FIXED_8, 549 + -1, UNIPHIER_PIN_DRV_FIXED8, 552 550 175, UNIPHIER_PIN_PULL_DOWN), 553 551 UNIPHIER_PINCTRL_PIN(176, "AO2D0", UNIPHIER_PIN_IECTRL_NONE, 554 - -1, UNIPHIER_PIN_DRV_FIXED_8, 552 + -1, UNIPHIER_PIN_DRV_FIXED8, 555 553 176, UNIPHIER_PIN_PULL_DOWN), 556 554 UNIPHIER_PINCTRL_PIN(177, "AO2DACCK", UNIPHIER_PIN_IECTRL_NONE, 557 - -1, UNIPHIER_PIN_DRV_FIXED_8, 555 + -1, UNIPHIER_PIN_DRV_FIXED8, 558 556 177, UNIPHIER_PIN_PULL_DOWN), 559 557 UNIPHIER_PINCTRL_PIN(178, "AO2BCK", UNIPHIER_PIN_IECTRL_NONE, 560 - -1, UNIPHIER_PIN_DRV_FIXED_8, 558 + -1, UNIPHIER_PIN_DRV_FIXED8, 561 559 178, UNIPHIER_PIN_PULL_DOWN), 562 560 UNIPHIER_PINCTRL_PIN(179, "PORT222", UNIPHIER_PIN_IECTRL_NONE, 563 - -1, UNIPHIER_PIN_DRV_FIXED_8, 561 + -1, UNIPHIER_PIN_DRV_FIXED8, 564 562 179, UNIPHIER_PIN_PULL_DOWN), 565 563 UNIPHIER_PINCTRL_PIN(180, "PORT223", UNIPHIER_PIN_IECTRL_NONE, 566 - -1, UNIPHIER_PIN_DRV_FIXED_8, 564 + -1, UNIPHIER_PIN_DRV_FIXED8, 567 565 180, UNIPHIER_PIN_PULL_DOWN), 568 566 UNIPHIER_PINCTRL_PIN(181, "PORT224", UNIPHIER_PIN_IECTRL_NONE, 569 - -1, UNIPHIER_PIN_DRV_FIXED_8, 567 + -1, UNIPHIER_PIN_DRV_FIXED8, 570 568 181, UNIPHIER_PIN_PULL_DOWN), 571 569 UNIPHIER_PINCTRL_PIN(182, "PORT225", UNIPHIER_PIN_IECTRL_NONE, 572 - -1, UNIPHIER_PIN_DRV_FIXED_8, 570 + -1, UNIPHIER_PIN_DRV_FIXED8, 573 571 182, UNIPHIER_PIN_PULL_DOWN), 574 572 UNIPHIER_PINCTRL_PIN(183, "PORT226", UNIPHIER_PIN_IECTRL_NONE, 575 - -1, UNIPHIER_PIN_DRV_FIXED_8, 573 + -1, UNIPHIER_PIN_DRV_FIXED8, 576 574 183, UNIPHIER_PIN_PULL_DOWN), 577 575 UNIPHIER_PINCTRL_PIN(184, "PORT227", UNIPHIER_PIN_IECTRL_NONE, 578 - -1, UNIPHIER_PIN_DRV_FIXED_8, 576 + -1, UNIPHIER_PIN_DRV_FIXED8, 579 577 184, UNIPHIER_PIN_PULL_DOWN), 580 578 UNIPHIER_PINCTRL_PIN(185, "PORT230", UNIPHIER_PIN_IECTRL_NONE, 581 - -1, UNIPHIER_PIN_DRV_FIXED_8, 579 + -1, UNIPHIER_PIN_DRV_FIXED8, 582 580 185, UNIPHIER_PIN_PULL_DOWN), 583 581 UNIPHIER_PINCTRL_PIN(186, "FANPWM", UNIPHIER_PIN_IECTRL_NONE, 584 - -1, UNIPHIER_PIN_DRV_FIXED_8, 582 + -1, UNIPHIER_PIN_DRV_FIXED8, 585 583 186, UNIPHIER_PIN_PULL_DOWN), 586 584 UNIPHIER_PINCTRL_PIN(187, "HRDDCSDA0", 0, 587 - 187, UNIPHIER_PIN_DRV_4_8, 585 + 187, UNIPHIER_PIN_DRV_1BIT, 588 586 187, UNIPHIER_PIN_PULL_DOWN), 589 587 UNIPHIER_PINCTRL_PIN(188, "HRDDCSCL0", 0, 590 - 188, UNIPHIER_PIN_DRV_4_8, 588 + 188, UNIPHIER_PIN_DRV_1BIT, 591 589 188, UNIPHIER_PIN_PULL_DOWN), 592 590 UNIPHIER_PINCTRL_PIN(189, "HRDDCSDA1", 0, 593 - 189, UNIPHIER_PIN_DRV_4_8, 591 + 189, UNIPHIER_PIN_DRV_1BIT, 594 592 189, UNIPHIER_PIN_PULL_DOWN), 595 593 UNIPHIER_PINCTRL_PIN(190, "HRDDCSCL1", 0, 596 - 190, UNIPHIER_PIN_DRV_4_8, 594 + 190, UNIPHIER_PIN_DRV_1BIT, 597 595 190, UNIPHIER_PIN_PULL_DOWN), 598 596 UNIPHIER_PINCTRL_PIN(191, "HTDDCSDA0", 0, 599 - 191, UNIPHIER_PIN_DRV_4_8, 597 + 191, UNIPHIER_PIN_DRV_1BIT, 600 598 191, UNIPHIER_PIN_PULL_DOWN), 601 599 UNIPHIER_PINCTRL_PIN(192, "HTDDCSCL0", 0, 602 - 192, UNIPHIER_PIN_DRV_4_8, 600 + 192, UNIPHIER_PIN_DRV_1BIT, 603 601 192, UNIPHIER_PIN_PULL_DOWN), 604 602 UNIPHIER_PINCTRL_PIN(193, "HTDDCSDA1", 0, 605 - 193, UNIPHIER_PIN_DRV_4_8, 603 + 193, UNIPHIER_PIN_DRV_1BIT, 606 604 193, UNIPHIER_PIN_PULL_DOWN), 607 605 UNIPHIER_PINCTRL_PIN(194, "HTDDCSCL1", 0, 608 - 194, UNIPHIER_PIN_DRV_4_8, 606 + 194, UNIPHIER_PIN_DRV_1BIT, 609 607 194, UNIPHIER_PIN_PULL_DOWN), 610 608 UNIPHIER_PINCTRL_PIN(195, "PORT241", 0, 611 - 195, UNIPHIER_PIN_DRV_4_8, 609 + 195, UNIPHIER_PIN_DRV_1BIT, 612 610 195, UNIPHIER_PIN_PULL_DOWN), 613 611 UNIPHIER_PINCTRL_PIN(196, "PORT242", 0, 614 - 196, UNIPHIER_PIN_DRV_4_8, 612 + 196, UNIPHIER_PIN_DRV_1BIT, 615 613 196, UNIPHIER_PIN_PULL_DOWN), 616 614 UNIPHIER_PINCTRL_PIN(197, "PORT243", 0, 617 - 197, UNIPHIER_PIN_DRV_4_8, 615 + 197, UNIPHIER_PIN_DRV_1BIT, 618 616 197, UNIPHIER_PIN_PULL_DOWN), 619 617 UNIPHIER_PINCTRL_PIN(198, "MVSYNC", 0, 620 - 198, UNIPHIER_PIN_DRV_4_8, 618 + 198, UNIPHIER_PIN_DRV_1BIT, 621 619 198, UNIPHIER_PIN_PULL_DOWN), 622 620 UNIPHIER_PINCTRL_PIN(199, "SPISYNC0", UNIPHIER_PIN_IECTRL_NONE, 623 - 199, UNIPHIER_PIN_DRV_4_8, 621 + 199, UNIPHIER_PIN_DRV_1BIT, 624 622 199, UNIPHIER_PIN_PULL_DOWN), 625 623 UNIPHIER_PINCTRL_PIN(200, "SPISCLK0", UNIPHIER_PIN_IECTRL_NONE, 626 - 200, UNIPHIER_PIN_DRV_4_8, 624 + 200, UNIPHIER_PIN_DRV_1BIT, 627 625 200, UNIPHIER_PIN_PULL_DOWN), 628 626 UNIPHIER_PINCTRL_PIN(201, "SPITXD0", UNIPHIER_PIN_IECTRL_NONE, 629 - 201, UNIPHIER_PIN_DRV_4_8, 627 + 201, UNIPHIER_PIN_DRV_1BIT, 630 628 201, UNIPHIER_PIN_PULL_DOWN), 631 629 UNIPHIER_PINCTRL_PIN(202, "SPIRXD0", UNIPHIER_PIN_IECTRL_NONE, 632 - 202, UNIPHIER_PIN_DRV_4_8, 630 + 202, UNIPHIER_PIN_DRV_1BIT, 633 631 202, UNIPHIER_PIN_PULL_DOWN), 634 632 UNIPHIER_PINCTRL_PIN(203, "CK54EXI", UNIPHIER_PIN_IECTRL_NONE, 635 - -1, UNIPHIER_PIN_DRV_FIXED_8, 633 + -1, UNIPHIER_PIN_DRV_FIXED8, 636 634 203, UNIPHIER_PIN_PULL_DOWN), 637 635 UNIPHIER_PINCTRL_PIN(204, "AEXCKA1", UNIPHIER_PIN_IECTRL_NONE, 638 - -1, UNIPHIER_PIN_DRV_FIXED_8, 636 + -1, UNIPHIER_PIN_DRV_FIXED8, 639 637 204, UNIPHIER_PIN_PULL_DOWN), 640 638 UNIPHIER_PINCTRL_PIN(205, "AEXCKA2", UNIPHIER_PIN_IECTRL_NONE, 641 - -1, UNIPHIER_PIN_DRV_FIXED_8, 639 + -1, UNIPHIER_PIN_DRV_FIXED8, 642 640 205, UNIPHIER_PIN_PULL_DOWN), 643 641 UNIPHIER_PINCTRL_PIN(206, "CK27EXI", UNIPHIER_PIN_IECTRL_NONE, 644 - -1, UNIPHIER_PIN_DRV_FIXED_8, 642 + -1, UNIPHIER_PIN_DRV_FIXED8, 645 643 206, UNIPHIER_PIN_PULL_DOWN), 646 644 UNIPHIER_PINCTRL_PIN(207, "STCDIN", 0, 647 - 207, UNIPHIER_PIN_DRV_4_8, 645 + 207, UNIPHIER_PIN_DRV_1BIT, 648 646 207, UNIPHIER_PIN_PULL_DOWN), 649 647 UNIPHIER_PINCTRL_PIN(208, "PHSYNI", 0, 650 - 208, UNIPHIER_PIN_DRV_4_8, 648 + 208, UNIPHIER_PIN_DRV_1BIT, 651 649 208, UNIPHIER_PIN_PULL_DOWN), 652 650 UNIPHIER_PINCTRL_PIN(209, "PVSYNI", 0, 653 - 209, UNIPHIER_PIN_DRV_4_8, 651 + 209, UNIPHIER_PIN_DRV_1BIT, 654 652 209, UNIPHIER_PIN_PULL_DOWN), 655 653 UNIPHIER_PINCTRL_PIN(210, "MVSYN", UNIPHIER_PIN_IECTRL_NONE, 656 - 210, UNIPHIER_PIN_DRV_4_8, 654 + 210, UNIPHIER_PIN_DRV_1BIT, 657 655 210, UNIPHIER_PIN_PULL_DOWN), 658 656 UNIPHIER_PINCTRL_PIN(211, "STCV", UNIPHIER_PIN_IECTRL_NONE, 659 - 211, UNIPHIER_PIN_DRV_4_8, 657 + 211, UNIPHIER_PIN_DRV_1BIT, 660 658 211, UNIPHIER_PIN_PULL_DOWN), 661 659 UNIPHIER_PINCTRL_PIN(212, "PORT262", UNIPHIER_PIN_IECTRL_NONE, 662 - 212, UNIPHIER_PIN_DRV_4_8, 660 + 212, UNIPHIER_PIN_DRV_1BIT, 663 661 212, UNIPHIER_PIN_PULL_DOWN), 664 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 664 213, UNIPHIER_PIN_PULL_DOWN), 667 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 667 214, UNIPHIER_PIN_PULL_DOWN), 670 668 UNIPHIER_PINCTRL_PIN(215, "PORT265", UNIPHIER_PIN_IECTRL_NONE, 671 - 215, UNIPHIER_PIN_DRV_4_8, 669 + 215, UNIPHIER_PIN_DRV_1BIT, 672 670 215, UNIPHIER_PIN_PULL_DOWN), 673 671 UNIPHIER_PINCTRL_PIN(216, "CK25O", 0, 674 - 216, UNIPHIER_PIN_DRV_4_8, 672 + 216, UNIPHIER_PIN_DRV_1BIT, 675 673 216, UNIPHIER_PIN_PULL_DOWN), 676 674 UNIPHIER_PINCTRL_PIN(217, "TXD0", 0, 677 - 217, UNIPHIER_PIN_DRV_4_8, 675 + 217, UNIPHIER_PIN_DRV_1BIT, 678 676 217, UNIPHIER_PIN_PULL_DOWN), 679 677 UNIPHIER_PINCTRL_PIN(218, "RXD0", 0, 680 - 218, UNIPHIER_PIN_DRV_4_8, 678 + 218, UNIPHIER_PIN_DRV_1BIT, 681 679 218, UNIPHIER_PIN_PULL_DOWN), 682 680 UNIPHIER_PINCTRL_PIN(219, "TXD3", 0, 683 - 219, UNIPHIER_PIN_DRV_4_8, 681 + 219, UNIPHIER_PIN_DRV_1BIT, 684 682 219, UNIPHIER_PIN_PULL_DOWN), 685 683 UNIPHIER_PINCTRL_PIN(220, "RXD3", 0, 686 - 220, UNIPHIER_PIN_DRV_4_8, 684 + 220, UNIPHIER_PIN_DRV_1BIT, 687 685 220, UNIPHIER_PIN_PULL_DOWN), 688 686 UNIPHIER_PINCTRL_PIN(221, "PORT273", 0, 689 - 221, UNIPHIER_PIN_DRV_4_8, 687 + 221, UNIPHIER_PIN_DRV_1BIT, 690 688 221, UNIPHIER_PIN_PULL_DOWN), 691 689 UNIPHIER_PINCTRL_PIN(222, "STCDOUTC", 0, 692 - 222, UNIPHIER_PIN_DRV_4_8, 690 + 222, UNIPHIER_PIN_DRV_1BIT, 693 691 222, UNIPHIER_PIN_PULL_DOWN), 694 692 UNIPHIER_PINCTRL_PIN(223, "PORT274", 0, 695 - 223, UNIPHIER_PIN_DRV_4_8, 693 + 223, UNIPHIER_PIN_DRV_1BIT, 696 694 223, UNIPHIER_PIN_PULL_DOWN), 697 695 UNIPHIER_PINCTRL_PIN(224, "PORT275", 0, 698 - 224, UNIPHIER_PIN_DRV_4_8, 696 + 224, UNIPHIER_PIN_DRV_1BIT, 699 697 224, UNIPHIER_PIN_PULL_DOWN), 700 698 UNIPHIER_PINCTRL_PIN(225, "PORT276", 0, 701 - 225, UNIPHIER_PIN_DRV_4_8, 699 + 225, UNIPHIER_PIN_DRV_1BIT, 702 700 225, UNIPHIER_PIN_PULL_DOWN), 703 701 UNIPHIER_PINCTRL_PIN(226, "PORT277", 0, 704 - 226, UNIPHIER_PIN_DRV_4_8, 702 + 226, UNIPHIER_PIN_DRV_1BIT, 705 703 226, UNIPHIER_PIN_PULL_DOWN), 706 704 UNIPHIER_PINCTRL_PIN(227, "PORT280", 0, 707 - 227, UNIPHIER_PIN_DRV_4_8, 705 + 227, UNIPHIER_PIN_DRV_1BIT, 708 706 227, UNIPHIER_PIN_PULL_DOWN), 709 707 UNIPHIER_PINCTRL_PIN(228, "PORT281", 0, 710 - 228, UNIPHIER_PIN_DRV_4_8, 708 + 228, UNIPHIER_PIN_DRV_1BIT, 711 709 228, UNIPHIER_PIN_PULL_DOWN), 712 710 UNIPHIER_PINCTRL_PIN(229, "PORT282", 0, 713 - 229, UNIPHIER_PIN_DRV_4_8, 711 + 229, UNIPHIER_PIN_DRV_1BIT, 714 712 229, UNIPHIER_PIN_PULL_DOWN), 715 713 UNIPHIER_PINCTRL_PIN(230, "PORT283", 0, 716 - 230, UNIPHIER_PIN_DRV_4_8, 714 + 230, UNIPHIER_PIN_DRV_1BIT, 717 715 230, UNIPHIER_PIN_PULL_DOWN), 718 716 UNIPHIER_PINCTRL_PIN(231, "PORT284", 0, 719 - 231, UNIPHIER_PIN_DRV_4_8, 717 + 231, UNIPHIER_PIN_DRV_1BIT, 720 718 231, UNIPHIER_PIN_PULL_DOWN), 721 719 UNIPHIER_PINCTRL_PIN(232, "PORT285", 0, 722 - 232, UNIPHIER_PIN_DRV_4_8, 720 + 232, UNIPHIER_PIN_DRV_1BIT, 723 721 232, UNIPHIER_PIN_PULL_DOWN), 724 722 UNIPHIER_PINCTRL_PIN(233, "T0HPD", 0, 725 - 233, UNIPHIER_PIN_DRV_4_8, 723 + 233, UNIPHIER_PIN_DRV_1BIT, 726 724 233, UNIPHIER_PIN_PULL_DOWN), 727 725 UNIPHIER_PINCTRL_PIN(234, "T1HPD", 0, 728 - 234, UNIPHIER_PIN_DRV_4_8, 726 + 234, UNIPHIER_PIN_DRV_1BIT, 729 727 234, UNIPHIER_PIN_PULL_DOWN), 730 728 }; 731 729 732 730 static const unsigned emmc_pins[] = {36, 37, 38, 39, 40, 41, 42}; 733 - static const unsigned emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9}; 731 + static const int emmc_muxvals[] = {9, 9, 9, 9, 9, 9, 9}; 734 732 static const unsigned emmc_dat8_pins[] = {43, 44, 45, 46}; 735 - static const unsigned emmc_dat8_muxvals[] = {9, 9, 9, 9}; 733 + static const int emmc_dat8_muxvals[] = {9, 9, 9, 9}; 734 + static 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}; 737 + static 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}; 739 + static const unsigned ether_rgmii_pins[] = {143, 144, 145, 146, 147, 148, 149, 740 + 150, 151, 152, 153, 154, 155, 156, 741 + 157, 158}; 742 + static const int ether_rgmii_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 743 + 8, 8, 8, 8}; 744 + static const unsigned ether_rmii_pins[] = {143, 144, 145, 146, 147, 148, 149, 745 + 150, 152, 154, 155, 158}; 746 + static const int ether_rmii_muxvals[] = {8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9}; 736 747 static const unsigned i2c0_pins[] = {109, 110}; 737 - static const unsigned i2c0_muxvals[] = {8, 8}; 748 + static const int i2c0_muxvals[] = {8, 8}; 738 749 static const unsigned i2c1_pins[] = {111, 112}; 739 - static const unsigned i2c1_muxvals[] = {8, 8}; 750 + static const int i2c1_muxvals[] = {8, 8}; 740 751 static const unsigned i2c2_pins[] = {171, 172}; 741 - static const unsigned i2c2_muxvals[] = {8, 8}; 752 + static const int i2c2_muxvals[] = {8, 8}; 742 753 static const unsigned i2c3_pins[] = {159, 160}; 743 - static const unsigned i2c3_muxvals[] = {8, 8}; 754 + static const int i2c3_muxvals[] = {8, 8}; 744 755 static const unsigned i2c5_pins[] = {183, 184}; 745 - static const unsigned i2c5_muxvals[] = {11, 11}; 756 + static const int i2c5_muxvals[] = {11, 11}; 746 757 static const unsigned i2c6_pins[] = {185, 186}; 747 - static const unsigned i2c6_muxvals[] = {11, 11}; 758 + static const int i2c6_muxvals[] = {11, 11}; 748 759 static const unsigned nand_pins[] = {30, 31, 32, 33, 34, 35, 36, 39, 40, 41, 749 760 42, 43, 44, 45, 46}; 750 - static const unsigned nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 751 - 8, 8}; 761 + static const int nand_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8}; 752 762 static const unsigned nand_cs1_pins[] = {37, 38}; 753 - static const unsigned nand_cs1_muxvals[] = {8, 8}; 763 + static const int nand_cs1_muxvals[] = {8, 8}; 754 764 static const unsigned sd_pins[] = {47, 48, 49, 50, 51, 52, 53, 54, 55}; 755 - static const unsigned sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8}; 765 + static const int sd_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8}; 766 + static const unsigned system_bus_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 767 + 11, 12, 13}; 768 + static const int system_bus_muxvals[] = {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 769 + 8}; 770 + static const unsigned system_bus_cs1_pins[] = {14}; 771 + static const int system_bus_cs1_muxvals[] = {8}; 756 772 static const unsigned uart0_pins[] = {217, 218}; 757 - static const unsigned uart0_muxvals[] = {8, 8}; 773 + static const int uart0_muxvals[] = {8, 8}; 758 774 static const unsigned uart0b_pins[] = {179, 180}; 759 - static const unsigned uart0b_muxvals[] = {10, 10}; 775 + static const int uart0b_muxvals[] = {10, 10}; 760 776 static const unsigned uart1_pins[] = {115, 116}; 761 - static const unsigned uart1_muxvals[] = {8, 8}; 777 + static const int uart1_muxvals[] = {8, 8}; 762 778 static const unsigned uart2_pins[] = {113, 114}; 763 - static const unsigned uart2_muxvals[] = {8, 8}; 779 + static const int uart2_muxvals[] = {8, 8}; 764 780 static const unsigned uart3_pins[] = {219, 220}; 765 - static const unsigned uart3_muxvals[] = {8, 8}; 781 + static const int uart3_muxvals[] = {8, 8}; 766 782 static const unsigned uart3b_pins[] = {181, 182}; 767 - static const unsigned uart3b_muxvals[] = {10, 10}; 783 + static const int uart3b_muxvals[] = {10, 10}; 768 784 static const unsigned usb0_pins[] = {56, 57}; 769 - static const unsigned usb0_muxvals[] = {8, 8}; 785 + static const int usb0_muxvals[] = {8, 8}; 770 786 static const unsigned usb1_pins[] = {58, 59}; 771 - static const unsigned usb1_muxvals[] = {8, 8}; 787 + static const int usb1_muxvals[] = {8, 8}; 772 788 static const unsigned usb2_pins[] = {60, 61}; 773 - static const unsigned usb2_muxvals[] = {8, 8}; 789 + static const int usb2_muxvals[] = {8, 8}; 774 790 static const unsigned usb3_pins[] = {62, 63}; 775 - static const unsigned usb3_muxvals[] = {8, 8}; 791 + static const int usb3_muxvals[] = {8, 8}; 776 792 static const unsigned port_range0_pins[] = { 777 793 127, 128, 129, 130, 131, 132, 133, 134, /* PORT0x */ 778 794 135, 136, 137, 138, 139, 140, 141, 142, /* PORT1x */ ··· 802 786 61, 62, 63, 64, 65, 66, 67, 68, /* PORT9x */ 803 787 69, 70, 71, 76, 77, 78, 79, 80, /* PORT10x */ 804 788 }; 805 - static const unsigned port_range0_muxvals[] = { 789 + static const int port_range0_muxvals[] = { 806 790 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 807 791 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 808 792 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ ··· 834 818 218, 219, 220, 221, 223, 224, 225, 226, /* PORT27x */ 835 819 227, 228, 229, 230, 231, 232, 233, 234, /* PORT28x */ 836 820 }; 837 - static const unsigned port_range1_muxvals[] = { 821 + static const int port_range1_muxvals[] = { 838 822 15, 15, 15, 15, 15, 15, 15, 15, /* PORT12x */ 839 823 15, 15, 15, 15, 15, 15, 15, 15, /* PORT13x */ 840 824 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */ ··· 858 842 126, 72, 73, 92, 177, 93, 94, 176, /* XIRQ8-15 */ 859 843 74, 91, 27, 28, 29, 75, 20, 26, /* XIRQ16-23 */ 860 844 }; 861 - static const unsigned xirq_muxvals[] = { 845 + static const int xirq_muxvals[] = { 862 846 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ0-7 */ 863 847 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ8-15 */ 864 848 14, 14, 14, 14, 14, 14, 14, 14, /* XIRQ16-23 */ 865 849 }; 866 850 867 - static const struct uniphier_pinctrl_group proxstream2_groups[] = { 851 + static const struct uniphier_pinctrl_group uniphier_pxs2_groups[] = { 868 852 UNIPHIER_PINCTRL_GROUP(emmc), 869 853 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 854 + UNIPHIER_PINCTRL_GROUP(ether_mii), 855 + UNIPHIER_PINCTRL_GROUP(ether_rgmii), 856 + UNIPHIER_PINCTRL_GROUP(ether_rmii), 870 857 UNIPHIER_PINCTRL_GROUP(i2c0), 871 858 UNIPHIER_PINCTRL_GROUP(i2c1), 872 859 UNIPHIER_PINCTRL_GROUP(i2c2), ··· 879 860 UNIPHIER_PINCTRL_GROUP(nand), 880 861 UNIPHIER_PINCTRL_GROUP(nand_cs1), 881 862 UNIPHIER_PINCTRL_GROUP(sd), 863 + UNIPHIER_PINCTRL_GROUP(system_bus), 864 + UNIPHIER_PINCTRL_GROUP(system_bus_cs1), 882 865 UNIPHIER_PINCTRL_GROUP(uart0), 883 866 UNIPHIER_PINCTRL_GROUP(uart0b), 884 867 UNIPHIER_PINCTRL_GROUP(uart1), ··· 1145 1124 }; 1146 1125 1147 1126 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 1127 + static const char * const ether_mii_groups[] = {"ether_mii"}; 1128 + static const char * const ether_rgmii_groups[] = {"ether_rgmii"}; 1129 + static const char * const ether_rmii_groups[] = {"ether_rmii"}; 1148 1130 static const char * const i2c0_groups[] = {"i2c0"}; 1149 1131 static const char * const i2c1_groups[] = {"i2c1"}; 1150 1132 static const char * const i2c2_groups[] = {"i2c2"}; ··· 1156 1132 static const char * const i2c6_groups[] = {"i2c6"}; 1157 1133 static const char * const nand_groups[] = {"nand", "nand_cs1"}; 1158 1134 static const char * const sd_groups[] = {"sd"}; 1135 + static const char * const system_bus_groups[] = {"system_bus", 1136 + "system_bus_cs1"}; 1159 1137 static const char * const uart0_groups[] = {"uart0", "uart0b"}; 1160 1138 static const char * const uart1_groups[] = {"uart1"}; 1161 1139 static const char * const uart2_groups[] = {"uart2"}; ··· 1234 1208 "xirq20", "xirq21", "xirq22", "xirq23", 1235 1209 }; 1236 1210 1237 - static const struct uniphier_pinmux_function proxstream2_functions[] = { 1211 + static const struct uniphier_pinmux_function uniphier_pxs2_functions[] = { 1238 1212 UNIPHIER_PINMUX_FUNCTION(emmc), 1213 + UNIPHIER_PINMUX_FUNCTION(ether_mii), 1214 + UNIPHIER_PINMUX_FUNCTION(ether_rgmii), 1215 + UNIPHIER_PINMUX_FUNCTION(ether_rmii), 1239 1216 UNIPHIER_PINMUX_FUNCTION(i2c0), 1240 1217 UNIPHIER_PINMUX_FUNCTION(i2c1), 1241 1218 UNIPHIER_PINMUX_FUNCTION(i2c2), ··· 1247 1218 UNIPHIER_PINMUX_FUNCTION(i2c6), 1248 1219 UNIPHIER_PINMUX_FUNCTION(nand), 1249 1220 UNIPHIER_PINMUX_FUNCTION(sd), 1221 + UNIPHIER_PINMUX_FUNCTION(system_bus), 1250 1222 UNIPHIER_PINMUX_FUNCTION(uart0), 1251 1223 UNIPHIER_PINMUX_FUNCTION(uart1), 1252 1224 UNIPHIER_PINMUX_FUNCTION(uart2), ··· 1260 1230 UNIPHIER_PINMUX_FUNCTION(xirq), 1261 1231 }; 1262 1232 1263 - static struct uniphier_pinctrl_socdata proxstream2_pindata = { 1264 - .groups = proxstream2_groups, 1265 - .groups_count = ARRAY_SIZE(proxstream2_groups), 1266 - .functions = proxstream2_functions, 1267 - .functions_count = ARRAY_SIZE(proxstream2_functions), 1268 - .mux_bits = 8, 1269 - .reg_stride = 4, 1270 - .load_pinctrl = false, 1233 + static struct uniphier_pinctrl_socdata uniphier_pxs2_pindata = { 1234 + .pins = uniphier_pxs2_pins, 1235 + .npins = ARRAY_SIZE(uniphier_pxs2_pins), 1236 + .groups = uniphier_pxs2_groups, 1237 + .groups_count = ARRAY_SIZE(uniphier_pxs2_groups), 1238 + .functions = uniphier_pxs2_functions, 1239 + .functions_count = ARRAY_SIZE(uniphier_pxs2_functions), 1240 + .caps = 0, 1271 1241 }; 1272 1242 1273 - static struct pinctrl_desc proxstream2_pinctrl_desc = { 1274 - .name = DRIVER_NAME, 1275 - .pins = proxstream2_pins, 1276 - .npins = ARRAY_SIZE(proxstream2_pins), 1277 - .owner = THIS_MODULE, 1278 - }; 1279 - 1280 - static int proxstream2_pinctrl_probe(struct platform_device *pdev) 1243 + static int uniphier_pxs2_pinctrl_probe(struct platform_device *pdev) 1281 1244 { 1282 - return uniphier_pinctrl_probe(pdev, &proxstream2_pinctrl_desc, 1283 - &proxstream2_pindata); 1245 + return uniphier_pinctrl_probe(pdev, &uniphier_pxs2_pindata); 1284 1246 } 1285 1247 1286 - static const struct of_device_id proxstream2_pinctrl_match[] = { 1248 + static const struct of_device_id uniphier_pxs2_pinctrl_match[] = { 1249 + { .compatible = "socionext,uniphier-pxs2-pinctrl" }, 1287 1250 { .compatible = "socionext,proxstream2-pinctrl" }, 1288 1251 { /* sentinel */ } 1289 1252 }; 1290 - MODULE_DEVICE_TABLE(of, proxstream2_pinctrl_match); 1253 + MODULE_DEVICE_TABLE(of, uniphier_pxs2_pinctrl_match); 1291 1254 1292 - static struct platform_driver proxstream2_pinctrl_driver = { 1293 - .probe = proxstream2_pinctrl_probe, 1255 + static struct platform_driver uniphier_pxs2_pinctrl_driver = { 1256 + .probe = uniphier_pxs2_pinctrl_probe, 1294 1257 .driver = { 1295 - .name = DRIVER_NAME, 1296 - .of_match_table = proxstream2_pinctrl_match, 1258 + .name = "uniphier-pxs2-pinctrl", 1259 + .of_match_table = uniphier_pxs2_pinctrl_match, 1297 1260 }, 1298 1261 }; 1299 - module_platform_driver(proxstream2_pinctrl_driver); 1262 + module_platform_driver(uniphier_pxs2_pinctrl_driver); 1300 1263 1301 1264 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 1302 1265 MODULE_DESCRIPTION("UniPhier ProXstream2 pinctrl driver");
+266 -189
drivers/pinctrl/uniphier/pinctrl-uniphier-sld8.c
··· 19 19 20 20 #include "pinctrl-uniphier.h" 21 21 22 - #define DRIVER_NAME "ph1-sld8-pinctrl" 23 - 24 - static const struct pinctrl_pin_desc ph1_sld8_pins[] = { 22 + static const struct pinctrl_pin_desc uniphier_sld8_pins[] = { 25 23 UNIPHIER_PINCTRL_PIN(0, "PCA00", 0, 26 - 15, UNIPHIER_PIN_DRV_4_8, 24 + 15, UNIPHIER_PIN_DRV_1BIT, 27 25 15, UNIPHIER_PIN_PULL_DOWN), 28 26 UNIPHIER_PINCTRL_PIN(1, "PCA01", 0, 29 - 16, UNIPHIER_PIN_DRV_4_8, 27 + 16, UNIPHIER_PIN_DRV_1BIT, 30 28 16, UNIPHIER_PIN_PULL_DOWN), 31 29 UNIPHIER_PINCTRL_PIN(2, "PCA02", 0, 32 - 17, UNIPHIER_PIN_DRV_4_8, 30 + 17, UNIPHIER_PIN_DRV_1BIT, 33 31 17, UNIPHIER_PIN_PULL_DOWN), 34 32 UNIPHIER_PINCTRL_PIN(3, "PCA03", 0, 35 - 18, UNIPHIER_PIN_DRV_4_8, 33 + 18, UNIPHIER_PIN_DRV_1BIT, 36 34 18, UNIPHIER_PIN_PULL_DOWN), 37 35 UNIPHIER_PINCTRL_PIN(4, "PCA04", 0, 38 - 19, UNIPHIER_PIN_DRV_4_8, 36 + 19, UNIPHIER_PIN_DRV_1BIT, 39 37 19, UNIPHIER_PIN_PULL_DOWN), 40 38 UNIPHIER_PINCTRL_PIN(5, "PCA05", 0, 41 - 20, UNIPHIER_PIN_DRV_4_8, 39 + 20, UNIPHIER_PIN_DRV_1BIT, 42 40 20, UNIPHIER_PIN_PULL_DOWN), 43 41 UNIPHIER_PINCTRL_PIN(6, "PCA06", 0, 44 - 21, UNIPHIER_PIN_DRV_4_8, 42 + 21, UNIPHIER_PIN_DRV_1BIT, 45 43 21, UNIPHIER_PIN_PULL_DOWN), 46 44 UNIPHIER_PINCTRL_PIN(7, "PCA07", 0, 47 - 22, UNIPHIER_PIN_DRV_4_8, 45 + 22, UNIPHIER_PIN_DRV_1BIT, 48 46 22, UNIPHIER_PIN_PULL_DOWN), 49 47 UNIPHIER_PINCTRL_PIN(8, "PCA08", 0, 50 - 23, UNIPHIER_PIN_DRV_4_8, 48 + 23, UNIPHIER_PIN_DRV_1BIT, 51 49 23, UNIPHIER_PIN_PULL_DOWN), 52 50 UNIPHIER_PINCTRL_PIN(9, "PCA09", 0, 53 - 24, UNIPHIER_PIN_DRV_4_8, 51 + 24, UNIPHIER_PIN_DRV_1BIT, 54 52 24, UNIPHIER_PIN_PULL_DOWN), 55 53 UNIPHIER_PINCTRL_PIN(10, "PCA10", 0, 56 - 25, UNIPHIER_PIN_DRV_4_8, 54 + 25, UNIPHIER_PIN_DRV_1BIT, 57 55 25, UNIPHIER_PIN_PULL_DOWN), 58 56 UNIPHIER_PINCTRL_PIN(11, "PCA11", 0, 59 - 26, UNIPHIER_PIN_DRV_4_8, 57 + 26, UNIPHIER_PIN_DRV_1BIT, 60 58 26, UNIPHIER_PIN_PULL_DOWN), 61 59 UNIPHIER_PINCTRL_PIN(12, "PCA12", 0, 62 - 27, UNIPHIER_PIN_DRV_4_8, 60 + 27, UNIPHIER_PIN_DRV_1BIT, 63 61 27, UNIPHIER_PIN_PULL_DOWN), 64 62 UNIPHIER_PINCTRL_PIN(13, "PCA13", 0, 65 - 28, UNIPHIER_PIN_DRV_4_8, 63 + 28, UNIPHIER_PIN_DRV_1BIT, 66 64 28, UNIPHIER_PIN_PULL_DOWN), 67 65 UNIPHIER_PINCTRL_PIN(14, "PCA14", 0, 68 - 29, UNIPHIER_PIN_DRV_4_8, 66 + 29, UNIPHIER_PIN_DRV_1BIT, 69 67 29, UNIPHIER_PIN_PULL_DOWN), 70 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 70 30, UNIPHIER_PIN_PULL_UP), 73 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 73 31, UNIPHIER_PIN_PULL_UP), 76 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 76 32, UNIPHIER_PIN_PULL_DOWN), 79 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 79 33, UNIPHIER_PIN_PULL_DOWN), 82 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 82 34, UNIPHIER_PIN_PULL_DOWN), 85 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 85 35, UNIPHIER_PIN_PULL_UP), 88 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 88 36, UNIPHIER_PIN_PULL_UP), 91 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 91 119, UNIPHIER_PIN_PULL_UP), 94 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 94 120, UNIPHIER_PIN_PULL_UP), 97 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 97 121, UNIPHIER_PIN_PULL_UP), 100 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 100 122, UNIPHIER_PIN_PULL_UP), 103 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 103 123, UNIPHIER_PIN_PULL_UP), 106 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 106 124, UNIPHIER_PIN_PULL_UP), 109 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 109 125, UNIPHIER_PIN_PULL_UP), 112 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 112 126, UNIPHIER_PIN_PULL_UP), 115 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 115 127, UNIPHIER_PIN_PULL_UP), 118 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 118 128, UNIPHIER_PIN_PULL_UP), 121 119 UNIPHIER_PINCTRL_PIN(32, "SDCLK", 8, 122 - 40, UNIPHIER_PIN_DRV_8_12_16_20, 120 + 10, UNIPHIER_PIN_DRV_2BIT, 123 121 -1, UNIPHIER_PIN_PULL_NONE), 124 122 UNIPHIER_PINCTRL_PIN(33, "SDCMD", 8, 125 - 44, UNIPHIER_PIN_DRV_8_12_16_20, 123 + 11, UNIPHIER_PIN_DRV_2BIT, 126 124 -1, UNIPHIER_PIN_PULL_NONE), 127 125 UNIPHIER_PINCTRL_PIN(34, "SDDAT0", 8, 128 - 48, UNIPHIER_PIN_DRV_8_12_16_20, 126 + 12, UNIPHIER_PIN_DRV_2BIT, 129 127 -1, UNIPHIER_PIN_PULL_NONE), 130 128 UNIPHIER_PINCTRL_PIN(35, "SDDAT1", 8, 131 - 52, UNIPHIER_PIN_DRV_8_12_16_20, 129 + 13, UNIPHIER_PIN_DRV_2BIT, 132 130 -1, UNIPHIER_PIN_PULL_NONE), 133 131 UNIPHIER_PINCTRL_PIN(36, "SDDAT2", 8, 134 - 56, UNIPHIER_PIN_DRV_8_12_16_20, 132 + 14, UNIPHIER_PIN_DRV_2BIT, 135 133 -1, UNIPHIER_PIN_PULL_NONE), 136 134 UNIPHIER_PINCTRL_PIN(37, "SDDAT3", 8, 137 - 60, UNIPHIER_PIN_DRV_8_12_16_20, 135 + 15, UNIPHIER_PIN_DRV_2BIT, 138 136 -1, UNIPHIER_PIN_PULL_NONE), 139 137 UNIPHIER_PINCTRL_PIN(38, "SDCD", 8, 140 - -1, UNIPHIER_PIN_DRV_FIXED_4, 138 + -1, UNIPHIER_PIN_DRV_FIXED4, 141 139 129, UNIPHIER_PIN_PULL_DOWN), 142 140 UNIPHIER_PINCTRL_PIN(39, "SDWP", 8, 143 - -1, UNIPHIER_PIN_DRV_FIXED_4, 141 + -1, UNIPHIER_PIN_DRV_FIXED4, 144 142 130, UNIPHIER_PIN_PULL_DOWN), 145 143 UNIPHIER_PINCTRL_PIN(40, "SDVOLC", 9, 146 - -1, UNIPHIER_PIN_DRV_FIXED_4, 144 + -1, UNIPHIER_PIN_DRV_FIXED4, 147 145 131, UNIPHIER_PIN_PULL_DOWN), 148 146 UNIPHIER_PINCTRL_PIN(41, "USB0VBUS", 0, 149 - 37, UNIPHIER_PIN_DRV_4_8, 147 + 37, UNIPHIER_PIN_DRV_1BIT, 150 148 37, UNIPHIER_PIN_PULL_DOWN), 151 149 UNIPHIER_PINCTRL_PIN(42, "USB0OD", 0, 152 - 38, UNIPHIER_PIN_DRV_4_8, 150 + 38, UNIPHIER_PIN_DRV_1BIT, 153 151 38, UNIPHIER_PIN_PULL_DOWN), 154 152 UNIPHIER_PINCTRL_PIN(43, "USB1VBUS", 0, 155 - 39, UNIPHIER_PIN_DRV_4_8, 153 + 39, UNIPHIER_PIN_DRV_1BIT, 156 154 39, UNIPHIER_PIN_PULL_DOWN), 157 155 UNIPHIER_PINCTRL_PIN(44, "USB1OD", 0, 158 - 40, UNIPHIER_PIN_DRV_4_8, 156 + 40, UNIPHIER_PIN_DRV_1BIT, 159 157 40, UNIPHIER_PIN_PULL_DOWN), 160 158 UNIPHIER_PINCTRL_PIN(45, "PCRESET", 0, 161 - 41, UNIPHIER_PIN_DRV_4_8, 159 + 41, UNIPHIER_PIN_DRV_1BIT, 162 160 41, UNIPHIER_PIN_PULL_DOWN), 163 161 UNIPHIER_PINCTRL_PIN(46, "PCREG", 0, 164 - 42, UNIPHIER_PIN_DRV_4_8, 162 + 42, UNIPHIER_PIN_DRV_1BIT, 165 163 42, UNIPHIER_PIN_PULL_DOWN), 166 164 UNIPHIER_PINCTRL_PIN(47, "PCCE2", 0, 167 - 43, UNIPHIER_PIN_DRV_4_8, 165 + 43, UNIPHIER_PIN_DRV_1BIT, 168 166 43, UNIPHIER_PIN_PULL_DOWN), 169 167 UNIPHIER_PINCTRL_PIN(48, "PCVS1", 0, 170 - 44, UNIPHIER_PIN_DRV_4_8, 168 + 44, UNIPHIER_PIN_DRV_1BIT, 171 169 44, UNIPHIER_PIN_PULL_DOWN), 172 170 UNIPHIER_PINCTRL_PIN(49, "PCCD2", 0, 173 - 45, UNIPHIER_PIN_DRV_4_8, 171 + 45, UNIPHIER_PIN_DRV_1BIT, 174 172 45, UNIPHIER_PIN_PULL_DOWN), 175 173 UNIPHIER_PINCTRL_PIN(50, "PCCD1", 0, 176 - 46, UNIPHIER_PIN_DRV_4_8, 174 + 46, UNIPHIER_PIN_DRV_1BIT, 177 175 46, UNIPHIER_PIN_PULL_DOWN), 178 176 UNIPHIER_PINCTRL_PIN(51, "PCREADY", 0, 179 - 47, UNIPHIER_PIN_DRV_4_8, 177 + 47, UNIPHIER_PIN_DRV_1BIT, 180 178 47, UNIPHIER_PIN_PULL_DOWN), 181 179 UNIPHIER_PINCTRL_PIN(52, "PCDOE", 0, 182 - 48, UNIPHIER_PIN_DRV_4_8, 180 + 48, UNIPHIER_PIN_DRV_1BIT, 183 181 48, UNIPHIER_PIN_PULL_DOWN), 184 182 UNIPHIER_PINCTRL_PIN(53, "PCCE1", 0, 185 - 49, UNIPHIER_PIN_DRV_4_8, 183 + 49, UNIPHIER_PIN_DRV_1BIT, 186 184 49, UNIPHIER_PIN_PULL_DOWN), 187 185 UNIPHIER_PINCTRL_PIN(54, "PCWE", 0, 188 - 50, UNIPHIER_PIN_DRV_4_8, 186 + 50, UNIPHIER_PIN_DRV_1BIT, 189 187 50, UNIPHIER_PIN_PULL_DOWN), 190 188 UNIPHIER_PINCTRL_PIN(55, "PCOE", 0, 191 - 51, UNIPHIER_PIN_DRV_4_8, 189 + 51, UNIPHIER_PIN_DRV_1BIT, 192 190 51, UNIPHIER_PIN_PULL_DOWN), 193 191 UNIPHIER_PINCTRL_PIN(56, "PCWAIT", 0, 194 - 52, UNIPHIER_PIN_DRV_4_8, 192 + 52, UNIPHIER_PIN_DRV_1BIT, 195 193 52, UNIPHIER_PIN_PULL_DOWN), 196 194 UNIPHIER_PINCTRL_PIN(57, "PCIOWR", 0, 197 - 53, UNIPHIER_PIN_DRV_4_8, 195 + 53, UNIPHIER_PIN_DRV_1BIT, 198 196 53, UNIPHIER_PIN_PULL_DOWN), 199 197 UNIPHIER_PINCTRL_PIN(58, "PCIORD", 0, 200 - 54, UNIPHIER_PIN_DRV_4_8, 198 + 54, UNIPHIER_PIN_DRV_1BIT, 201 199 54, UNIPHIER_PIN_PULL_DOWN), 202 200 UNIPHIER_PINCTRL_PIN(59, "HS0DIN0", 0, 203 - 55, UNIPHIER_PIN_DRV_4_8, 201 + 55, UNIPHIER_PIN_DRV_1BIT, 204 202 55, UNIPHIER_PIN_PULL_DOWN), 205 203 UNIPHIER_PINCTRL_PIN(60, "HS0DIN1", 0, 206 - 56, UNIPHIER_PIN_DRV_4_8, 204 + 56, UNIPHIER_PIN_DRV_1BIT, 207 205 56, UNIPHIER_PIN_PULL_DOWN), 208 206 UNIPHIER_PINCTRL_PIN(61, "HS0DIN2", 0, 209 - 57, UNIPHIER_PIN_DRV_4_8, 207 + 57, UNIPHIER_PIN_DRV_1BIT, 210 208 57, UNIPHIER_PIN_PULL_DOWN), 211 209 UNIPHIER_PINCTRL_PIN(62, "HS0DIN3", 0, 212 - 58, UNIPHIER_PIN_DRV_4_8, 210 + 58, UNIPHIER_PIN_DRV_1BIT, 213 211 58, UNIPHIER_PIN_PULL_DOWN), 214 212 UNIPHIER_PINCTRL_PIN(63, "HS0DIN4", 0, 215 - 59, UNIPHIER_PIN_DRV_4_8, 213 + 59, UNIPHIER_PIN_DRV_1BIT, 216 214 59, UNIPHIER_PIN_PULL_DOWN), 217 215 UNIPHIER_PINCTRL_PIN(64, "HS0DIN5", 0, 218 - 60, UNIPHIER_PIN_DRV_4_8, 216 + 60, UNIPHIER_PIN_DRV_1BIT, 219 217 60, UNIPHIER_PIN_PULL_DOWN), 220 218 UNIPHIER_PINCTRL_PIN(65, "HS0DIN6", 0, 221 - 61, UNIPHIER_PIN_DRV_4_8, 219 + 61, UNIPHIER_PIN_DRV_1BIT, 222 220 61, UNIPHIER_PIN_PULL_DOWN), 223 221 UNIPHIER_PINCTRL_PIN(66, "HS0DIN7", 0, 224 - 62, UNIPHIER_PIN_DRV_4_8, 222 + 62, UNIPHIER_PIN_DRV_1BIT, 225 223 62, UNIPHIER_PIN_PULL_DOWN), 226 224 UNIPHIER_PINCTRL_PIN(67, "HS0BCLKIN", 0, 227 - 63, UNIPHIER_PIN_DRV_4_8, 225 + 63, UNIPHIER_PIN_DRV_1BIT, 228 226 63, UNIPHIER_PIN_PULL_DOWN), 229 227 UNIPHIER_PINCTRL_PIN(68, "HS0VALIN", 0, 230 - 64, UNIPHIER_PIN_DRV_4_8, 228 + 64, UNIPHIER_PIN_DRV_1BIT, 231 229 64, UNIPHIER_PIN_PULL_DOWN), 232 230 UNIPHIER_PINCTRL_PIN(69, "HS0SYNCIN", 0, 233 - 65, UNIPHIER_PIN_DRV_4_8, 231 + 65, UNIPHIER_PIN_DRV_1BIT, 234 232 65, UNIPHIER_PIN_PULL_DOWN), 235 233 UNIPHIER_PINCTRL_PIN(70, "HSDOUT0", 0, 236 - 66, UNIPHIER_PIN_DRV_4_8, 234 + 66, UNIPHIER_PIN_DRV_1BIT, 237 235 66, UNIPHIER_PIN_PULL_DOWN), 238 236 UNIPHIER_PINCTRL_PIN(71, "HSDOUT1", 0, 239 - 67, UNIPHIER_PIN_DRV_4_8, 237 + 67, UNIPHIER_PIN_DRV_1BIT, 240 238 67, UNIPHIER_PIN_PULL_DOWN), 241 239 UNIPHIER_PINCTRL_PIN(72, "HSDOUT2", 0, 242 - 68, UNIPHIER_PIN_DRV_4_8, 240 + 68, UNIPHIER_PIN_DRV_1BIT, 243 241 68, UNIPHIER_PIN_PULL_DOWN), 244 242 UNIPHIER_PINCTRL_PIN(73, "HSDOUT3", 0, 245 - 69, UNIPHIER_PIN_DRV_4_8, 243 + 69, UNIPHIER_PIN_DRV_1BIT, 246 244 69, UNIPHIER_PIN_PULL_DOWN), 247 245 UNIPHIER_PINCTRL_PIN(74, "HSDOUT4", 0, 248 - 70, UNIPHIER_PIN_DRV_4_8, 246 + 70, UNIPHIER_PIN_DRV_1BIT, 249 247 70, UNIPHIER_PIN_PULL_DOWN), 250 248 UNIPHIER_PINCTRL_PIN(75, "HSDOUT5", 0, 251 - 71, UNIPHIER_PIN_DRV_4_8, 249 + 71, UNIPHIER_PIN_DRV_1BIT, 252 250 71, UNIPHIER_PIN_PULL_DOWN), 253 251 UNIPHIER_PINCTRL_PIN(76, "HSDOUT6", 0, 254 - 72, UNIPHIER_PIN_DRV_4_8, 252 + 72, UNIPHIER_PIN_DRV_1BIT, 255 253 72, UNIPHIER_PIN_PULL_DOWN), 256 254 UNIPHIER_PINCTRL_PIN(77, "HSDOUT7", 0, 257 - 73, UNIPHIER_PIN_DRV_4_8, 255 + 73, UNIPHIER_PIN_DRV_1BIT, 258 256 73, UNIPHIER_PIN_PULL_DOWN), 259 257 UNIPHIER_PINCTRL_PIN(78, "HSBCLKOUT", 0, 260 - 74, UNIPHIER_PIN_DRV_4_8, 258 + 74, UNIPHIER_PIN_DRV_1BIT, 261 259 74, UNIPHIER_PIN_PULL_DOWN), 262 260 UNIPHIER_PINCTRL_PIN(79, "HSVALOUT", 0, 263 - 75, UNIPHIER_PIN_DRV_4_8, 261 + 75, UNIPHIER_PIN_DRV_1BIT, 264 262 75, UNIPHIER_PIN_PULL_DOWN), 265 263 UNIPHIER_PINCTRL_PIN(80, "HSSYNCOUT", 0, 266 - 76, UNIPHIER_PIN_DRV_4_8, 264 + 76, UNIPHIER_PIN_DRV_1BIT, 267 265 76, UNIPHIER_PIN_PULL_DOWN), 268 266 UNIPHIER_PINCTRL_PIN(81, "HS1DIN0", 0, 269 - 77, UNIPHIER_PIN_DRV_4_8, 267 + 77, UNIPHIER_PIN_DRV_1BIT, 270 268 77, UNIPHIER_PIN_PULL_DOWN), 271 269 UNIPHIER_PINCTRL_PIN(82, "HS1DIN1", 0, 272 - 78, UNIPHIER_PIN_DRV_4_8, 270 + 78, UNIPHIER_PIN_DRV_1BIT, 273 271 78, UNIPHIER_PIN_PULL_DOWN), 274 272 UNIPHIER_PINCTRL_PIN(83, "HS1DIN2", 0, 275 - 79, UNIPHIER_PIN_DRV_4_8, 273 + 79, UNIPHIER_PIN_DRV_1BIT, 276 274 79, UNIPHIER_PIN_PULL_DOWN), 277 275 UNIPHIER_PINCTRL_PIN(84, "HS1DIN3", 0, 278 - 80, UNIPHIER_PIN_DRV_4_8, 276 + 80, UNIPHIER_PIN_DRV_1BIT, 279 277 80, UNIPHIER_PIN_PULL_DOWN), 280 278 UNIPHIER_PINCTRL_PIN(85, "HS1DIN4", 0, 281 - 81, UNIPHIER_PIN_DRV_4_8, 279 + 81, UNIPHIER_PIN_DRV_1BIT, 282 280 81, UNIPHIER_PIN_PULL_DOWN), 283 281 UNIPHIER_PINCTRL_PIN(86, "HS1DIN5", 0, 284 - 82, UNIPHIER_PIN_DRV_4_8, 282 + 82, UNIPHIER_PIN_DRV_1BIT, 285 283 82, UNIPHIER_PIN_PULL_DOWN), 286 284 UNIPHIER_PINCTRL_PIN(87, "HS1DIN6", 0, 287 - 83, UNIPHIER_PIN_DRV_4_8, 285 + 83, UNIPHIER_PIN_DRV_1BIT, 288 286 83, UNIPHIER_PIN_PULL_DOWN), 289 287 UNIPHIER_PINCTRL_PIN(88, "HS1DIN7", 0, 290 - 84, UNIPHIER_PIN_DRV_4_8, 288 + 84, UNIPHIER_PIN_DRV_1BIT, 291 289 84, UNIPHIER_PIN_PULL_DOWN), 292 290 UNIPHIER_PINCTRL_PIN(89, "HS1BCLKIN", 0, 293 - 85, UNIPHIER_PIN_DRV_4_8, 291 + 85, UNIPHIER_PIN_DRV_1BIT, 294 292 85, UNIPHIER_PIN_PULL_DOWN), 295 293 UNIPHIER_PINCTRL_PIN(90, "HS1VALIN", 0, 296 - 86, UNIPHIER_PIN_DRV_4_8, 294 + 86, UNIPHIER_PIN_DRV_1BIT, 297 295 86, UNIPHIER_PIN_PULL_DOWN), 298 296 UNIPHIER_PINCTRL_PIN(91, "HS1SYNCIN", 0, 299 - 87, UNIPHIER_PIN_DRV_4_8, 297 + 87, UNIPHIER_PIN_DRV_1BIT, 300 298 87, UNIPHIER_PIN_PULL_DOWN), 301 299 UNIPHIER_PINCTRL_PIN(92, "AGCI", 3, 302 - -1, UNIPHIER_PIN_DRV_FIXED_4, 300 + -1, UNIPHIER_PIN_DRV_FIXED4, 303 301 132, UNIPHIER_PIN_PULL_DOWN), 304 302 UNIPHIER_PINCTRL_PIN(93, "AGCR", 4, 305 - -1, UNIPHIER_PIN_DRV_FIXED_4, 303 + -1, UNIPHIER_PIN_DRV_FIXED4, 306 304 133, UNIPHIER_PIN_PULL_DOWN), 307 305 UNIPHIER_PINCTRL_PIN(94, "AGCBS", 5, 308 - -1, UNIPHIER_PIN_DRV_FIXED_4, 306 + -1, UNIPHIER_PIN_DRV_FIXED4, 309 307 134, UNIPHIER_PIN_PULL_DOWN), 310 308 UNIPHIER_PINCTRL_PIN(95, "IECOUT", 0, 311 - 88, UNIPHIER_PIN_DRV_4_8, 309 + 88, UNIPHIER_PIN_DRV_1BIT, 312 310 88, UNIPHIER_PIN_PULL_DOWN), 313 311 UNIPHIER_PINCTRL_PIN(96, "ASMCK", 0, 314 - 89, UNIPHIER_PIN_DRV_4_8, 312 + 89, UNIPHIER_PIN_DRV_1BIT, 315 313 89, UNIPHIER_PIN_PULL_DOWN), 316 314 UNIPHIER_PINCTRL_PIN(97, "ABCKO", UNIPHIER_PIN_IECTRL_NONE, 317 - 90, UNIPHIER_PIN_DRV_4_8, 315 + 90, UNIPHIER_PIN_DRV_1BIT, 318 316 90, UNIPHIER_PIN_PULL_DOWN), 319 317 UNIPHIER_PINCTRL_PIN(98, "ALRCKO", UNIPHIER_PIN_IECTRL_NONE, 320 - 91, UNIPHIER_PIN_DRV_4_8, 318 + 91, UNIPHIER_PIN_DRV_1BIT, 321 319 91, UNIPHIER_PIN_PULL_DOWN), 322 320 UNIPHIER_PINCTRL_PIN(99, "ASDOUT0", UNIPHIER_PIN_IECTRL_NONE, 323 - 92, UNIPHIER_PIN_DRV_4_8, 321 + 92, UNIPHIER_PIN_DRV_1BIT, 324 322 92, UNIPHIER_PIN_PULL_DOWN), 325 323 UNIPHIER_PINCTRL_PIN(100, "ASDOUT1", UNIPHIER_PIN_IECTRL_NONE, 326 - 93, UNIPHIER_PIN_DRV_4_8, 324 + 93, UNIPHIER_PIN_DRV_1BIT, 327 325 93, UNIPHIER_PIN_PULL_UP), 328 326 UNIPHIER_PINCTRL_PIN(101, "ARCOUT", 0, 329 - 94, UNIPHIER_PIN_DRV_4_8, 327 + 94, UNIPHIER_PIN_DRV_1BIT, 330 328 94, UNIPHIER_PIN_PULL_DOWN), 331 329 UNIPHIER_PINCTRL_PIN(102, "SDA0", 10, 332 - -1, UNIPHIER_PIN_DRV_FIXED_4, 330 + -1, UNIPHIER_PIN_DRV_FIXED4, 333 331 -1, UNIPHIER_PIN_PULL_NONE), 334 332 UNIPHIER_PINCTRL_PIN(103, "SCL0", 10, 335 - -1, UNIPHIER_PIN_DRV_FIXED_4, 333 + -1, UNIPHIER_PIN_DRV_FIXED4, 336 334 -1, UNIPHIER_PIN_PULL_NONE), 337 335 UNIPHIER_PINCTRL_PIN(104, "SDA1", 11, 338 - -1, UNIPHIER_PIN_DRV_FIXED_4, 336 + -1, UNIPHIER_PIN_DRV_FIXED4, 339 337 -1, UNIPHIER_PIN_PULL_NONE), 340 338 UNIPHIER_PINCTRL_PIN(105, "SCL1", 11, 341 - -1, UNIPHIER_PIN_DRV_FIXED_4, 339 + -1, UNIPHIER_PIN_DRV_FIXED4, 342 340 -1, UNIPHIER_PIN_PULL_NONE), 343 341 UNIPHIER_PINCTRL_PIN(106, "DMDSDA0", 12, 344 - -1, UNIPHIER_PIN_DRV_FIXED_4, 342 + -1, UNIPHIER_PIN_DRV_FIXED4, 345 343 -1, UNIPHIER_PIN_PULL_NONE), 346 344 UNIPHIER_PINCTRL_PIN(107, "DMDSCL0", 12, 347 - -1, UNIPHIER_PIN_DRV_FIXED_4, 345 + -1, UNIPHIER_PIN_DRV_FIXED4, 348 346 -1, UNIPHIER_PIN_PULL_NONE), 349 347 UNIPHIER_PINCTRL_PIN(108, "DMDSDA1", 13, 350 - -1, UNIPHIER_PIN_DRV_FIXED_4, 348 + -1, UNIPHIER_PIN_DRV_FIXED4, 351 349 -1, UNIPHIER_PIN_PULL_NONE), 352 350 UNIPHIER_PINCTRL_PIN(109, "DMDSCL1", 13, 353 - -1, UNIPHIER_PIN_DRV_FIXED_4, 351 + -1, UNIPHIER_PIN_DRV_FIXED4, 354 352 -1, UNIPHIER_PIN_PULL_NONE), 355 353 UNIPHIER_PINCTRL_PIN(110, "SBO0", UNIPHIER_PIN_IECTRL_NONE, 356 - 95, UNIPHIER_PIN_DRV_4_8, 354 + 95, UNIPHIER_PIN_DRV_1BIT, 357 355 95, UNIPHIER_PIN_PULL_UP), 358 356 UNIPHIER_PINCTRL_PIN(111, "SBI0", UNIPHIER_PIN_IECTRL_NONE, 359 - 96, UNIPHIER_PIN_DRV_4_8, 357 + 96, UNIPHIER_PIN_DRV_1BIT, 360 358 96, UNIPHIER_PIN_PULL_UP), 361 359 UNIPHIER_PINCTRL_PIN(112, "SBO1", 0, 362 - 97, UNIPHIER_PIN_DRV_4_8, 360 + 97, UNIPHIER_PIN_DRV_1BIT, 363 361 97, UNIPHIER_PIN_PULL_UP), 364 362 UNIPHIER_PINCTRL_PIN(113, "SBI1", 0, 365 - 98, UNIPHIER_PIN_DRV_4_8, 363 + 98, UNIPHIER_PIN_DRV_1BIT, 366 364 98, UNIPHIER_PIN_PULL_UP), 367 365 UNIPHIER_PINCTRL_PIN(114, "TXD1", 0, 368 - 99, UNIPHIER_PIN_DRV_4_8, 366 + 99, UNIPHIER_PIN_DRV_1BIT, 369 367 99, UNIPHIER_PIN_PULL_UP), 370 368 UNIPHIER_PINCTRL_PIN(115, "RXD1", 0, 371 - 100, UNIPHIER_PIN_DRV_4_8, 369 + 100, UNIPHIER_PIN_DRV_1BIT, 372 370 100, UNIPHIER_PIN_PULL_UP), 373 371 UNIPHIER_PINCTRL_PIN(116, "HIN", 1, 374 - -1, UNIPHIER_PIN_DRV_FIXED_5, 372 + -1, UNIPHIER_PIN_DRV_FIXED5, 375 373 -1, UNIPHIER_PIN_PULL_NONE), 376 374 UNIPHIER_PINCTRL_PIN(117, "VIN", 2, 377 - -1, UNIPHIER_PIN_DRV_FIXED_5, 375 + -1, UNIPHIER_PIN_DRV_FIXED5, 378 376 -1, UNIPHIER_PIN_PULL_NONE), 379 377 UNIPHIER_PINCTRL_PIN(118, "TCON0", 0, 380 - 101, UNIPHIER_PIN_DRV_4_8, 378 + 101, UNIPHIER_PIN_DRV_1BIT, 381 379 101, UNIPHIER_PIN_PULL_DOWN), 382 380 UNIPHIER_PINCTRL_PIN(119, "TCON1", 0, 383 - 102, UNIPHIER_PIN_DRV_4_8, 381 + 102, UNIPHIER_PIN_DRV_1BIT, 384 382 102, UNIPHIER_PIN_PULL_DOWN), 385 383 UNIPHIER_PINCTRL_PIN(120, "TCON2", 0, 386 - 103, UNIPHIER_PIN_DRV_4_8, 384 + 103, UNIPHIER_PIN_DRV_1BIT, 387 385 103, UNIPHIER_PIN_PULL_DOWN), 388 386 UNIPHIER_PINCTRL_PIN(121, "TCON3", 0, 389 - 104, UNIPHIER_PIN_DRV_4_8, 387 + 104, UNIPHIER_PIN_DRV_1BIT, 390 388 104, UNIPHIER_PIN_PULL_DOWN), 391 389 UNIPHIER_PINCTRL_PIN(122, "TCON4", 0, 392 - 105, UNIPHIER_PIN_DRV_4_8, 390 + 105, UNIPHIER_PIN_DRV_1BIT, 393 391 105, UNIPHIER_PIN_PULL_DOWN), 394 392 UNIPHIER_PINCTRL_PIN(123, "TCON5", 0, 395 - 106, UNIPHIER_PIN_DRV_4_8, 393 + 106, UNIPHIER_PIN_DRV_1BIT, 396 394 106, UNIPHIER_PIN_PULL_DOWN), 397 395 UNIPHIER_PINCTRL_PIN(124, "TCON6", 0, 398 - 107, UNIPHIER_PIN_DRV_4_8, 396 + 107, UNIPHIER_PIN_DRV_1BIT, 399 397 107, UNIPHIER_PIN_PULL_DOWN), 400 398 UNIPHIER_PINCTRL_PIN(125, "TCON7", 0, 401 - 108, UNIPHIER_PIN_DRV_4_8, 399 + 108, UNIPHIER_PIN_DRV_1BIT, 402 400 108, UNIPHIER_PIN_PULL_DOWN), 403 401 UNIPHIER_PINCTRL_PIN(126, "TCON8", 0, 404 - 109, UNIPHIER_PIN_DRV_4_8, 402 + 109, UNIPHIER_PIN_DRV_1BIT, 405 403 109, UNIPHIER_PIN_PULL_DOWN), 406 404 UNIPHIER_PINCTRL_PIN(127, "PWMA", 0, 407 - 110, UNIPHIER_PIN_DRV_4_8, 405 + 110, UNIPHIER_PIN_DRV_1BIT, 408 406 110, UNIPHIER_PIN_PULL_DOWN), 409 407 UNIPHIER_PINCTRL_PIN(128, "XIRQ0", 0, 410 - 111, UNIPHIER_PIN_DRV_4_8, 408 + 111, UNIPHIER_PIN_DRV_1BIT, 411 409 111, UNIPHIER_PIN_PULL_DOWN), 412 410 UNIPHIER_PINCTRL_PIN(129, "XIRQ1", 0, 413 - 112, UNIPHIER_PIN_DRV_4_8, 411 + 112, UNIPHIER_PIN_DRV_1BIT, 414 412 112, UNIPHIER_PIN_PULL_DOWN), 415 413 UNIPHIER_PINCTRL_PIN(130, "XIRQ2", 0, 416 - 113, UNIPHIER_PIN_DRV_4_8, 414 + 113, UNIPHIER_PIN_DRV_1BIT, 417 415 113, UNIPHIER_PIN_PULL_DOWN), 418 416 UNIPHIER_PINCTRL_PIN(131, "XIRQ3", 0, 419 - 114, UNIPHIER_PIN_DRV_4_8, 417 + 114, UNIPHIER_PIN_DRV_1BIT, 420 418 114, UNIPHIER_PIN_PULL_DOWN), 421 419 UNIPHIER_PINCTRL_PIN(132, "XIRQ4", 0, 422 - 115, UNIPHIER_PIN_DRV_4_8, 420 + 115, UNIPHIER_PIN_DRV_1BIT, 423 421 115, UNIPHIER_PIN_PULL_DOWN), 424 422 UNIPHIER_PINCTRL_PIN(133, "XIRQ5", 0, 425 - 116, UNIPHIER_PIN_DRV_4_8, 423 + 116, UNIPHIER_PIN_DRV_1BIT, 426 424 116, UNIPHIER_PIN_PULL_DOWN), 427 425 UNIPHIER_PINCTRL_PIN(134, "XIRQ6", 0, 428 - 117, UNIPHIER_PIN_DRV_4_8, 426 + 117, UNIPHIER_PIN_DRV_1BIT, 429 427 117, UNIPHIER_PIN_PULL_DOWN), 430 428 UNIPHIER_PINCTRL_PIN(135, "XIRQ7", 0, 431 - 118, UNIPHIER_PIN_DRV_4_8, 429 + 118, UNIPHIER_PIN_DRV_1BIT, 432 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 435 479 static const unsigned emmc_pins[] = {21, 22, 23, 24, 25, 26, 27}; 436 - static const unsigned emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 480 + static const int emmc_muxvals[] = {1, 1, 1, 1, 1, 1, 1}; 437 481 static const unsigned emmc_dat8_pins[] = {28, 29, 30, 31}; 438 - static const unsigned emmc_dat8_muxvals[] = {1, 1, 1, 1}; 482 + static const int emmc_dat8_muxvals[] = {1, 1, 1, 1}; 483 + static 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}; 485 + static 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}; 487 + static const unsigned ether_rmii_pins[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 488 + 14}; 489 + static const int ether_rmii_muxvals[] = {13, 13, 13, 13, 13, 13, 13, 13, 13, 490 + 13, 13, 13}; 439 491 static const unsigned i2c0_pins[] = {102, 103}; 440 - static const unsigned i2c0_muxvals[] = {0, 0}; 492 + static const int i2c0_muxvals[] = {0, 0}; 441 493 static const unsigned i2c1_pins[] = {104, 105}; 442 - static const unsigned i2c1_muxvals[] = {0, 0}; 494 + static const int i2c1_muxvals[] = {0, 0}; 443 495 static const unsigned i2c2_pins[] = {108, 109}; 444 - static const unsigned i2c2_muxvals[] = {2, 2}; 496 + static const int i2c2_muxvals[] = {2, 2}; 445 497 static const unsigned i2c3_pins[] = {108, 109}; 446 - static const unsigned i2c3_muxvals[] = {3, 3}; 498 + static const int i2c3_muxvals[] = {3, 3}; 447 499 static const unsigned nand_pins[] = {15, 16, 17, 18, 19, 20, 21, 24, 25, 26, 448 500 27, 28, 29, 30, 31}; 449 - static const unsigned nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 450 - 0, 0}; 501 + static const int nand_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; 451 502 static const unsigned nand_cs1_pins[] = {22, 23}; 452 - static const unsigned nand_cs1_muxvals[] = {0, 0}; 503 + static const int nand_cs1_muxvals[] = {0, 0}; 453 504 static const unsigned sd_pins[] = {32, 33, 34, 35, 36, 37, 38, 39, 40}; 454 - static const unsigned sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 505 + static const int sd_muxvals[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; 506 + static const unsigned system_bus_pins[] = {136, 137, 138, 139, 140, 141, 142, 507 + 143, 144, 145, 146, 147, 148, 149}; 508 + static const int system_bus_muxvals[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, 509 + -1, -1, -1, -1, -1}; 510 + static const unsigned system_bus_cs1_pins[] = {150}; 511 + static const int system_bus_cs1_muxvals[] = {-1}; 512 + static const unsigned system_bus_cs2_pins[] = {10}; 513 + static const int system_bus_cs2_muxvals[] = {1}; 514 + static const unsigned system_bus_cs3_pins[] = {11}; 515 + static const int system_bus_cs3_muxvals[] = {1}; 516 + static const unsigned system_bus_cs4_pins[] = {12}; 517 + static const int system_bus_cs4_muxvals[] = {1}; 518 + static const unsigned system_bus_cs5_pins[] = {13}; 519 + static const int system_bus_cs5_muxvals[] = {1}; 455 520 static const unsigned uart0_pins[] = {70, 71}; 456 - static const unsigned uart0_muxvals[] = {3, 3}; 521 + static const int uart0_muxvals[] = {3, 3}; 457 522 static const unsigned uart1_pins[] = {114, 115}; 458 - static const unsigned uart1_muxvals[] = {0, 0}; 523 + static const int uart1_muxvals[] = {0, 0}; 459 524 static const unsigned uart2_pins[] = {112, 113}; 460 - static const unsigned uart2_muxvals[] = {1, 1}; 525 + static const int uart2_muxvals[] = {1, 1}; 461 526 static const unsigned uart3_pins[] = {110, 111}; 462 - static const unsigned uart3_muxvals[] = {1, 1}; 527 + static const int uart3_muxvals[] = {1, 1}; 463 528 static const unsigned usb0_pins[] = {41, 42}; 464 - static const unsigned usb0_muxvals[] = {0, 0}; 529 + static const int usb0_muxvals[] = {0, 0}; 465 530 static const unsigned usb1_pins[] = {43, 44}; 466 - static const unsigned usb1_muxvals[] = {0, 0}; 531 + static const int usb1_muxvals[] = {0, 0}; 467 532 static const unsigned usb2_pins[] = {114, 115}; 468 - static const unsigned usb2_muxvals[] = {1, 1}; 533 + static const int usb2_muxvals[] = {1, 1}; 469 534 static const unsigned port_range0_pins[] = { 470 535 0, 1, 2, 3, 4, 5, 6, 7, /* PORT0x */ 471 536 8, 9, 10, 11, 12, 13, 14, 15, /* PORT1x */ ··· 546 481 48, 49, 46, 45, 123, 124, 125, 126, /* PORT11x */ 547 482 47, 127, 20, 56, 22, /* PORT120-124 */ 548 483 }; 549 - static const unsigned port_range0_muxvals[] = { 484 + static const int port_range0_muxvals[] = { 550 485 15, 15, 15, 15, 15, 15, 15, 15, /* PORT0x */ 551 486 15, 15, 15, 15, 15, 15, 15, 15, /* PORT1x */ 552 487 15, 15, 15, 15, 15, 15, 15, 15, /* PORT2x */ ··· 564 499 static const unsigned port_range1_pins[] = { 565 500 116, 117, /* PORT130-131 */ 566 501 }; 567 - static const unsigned port_range1_muxvals[] = { 502 + static const int port_range1_muxvals[] = { 568 503 15, 15, /* PORT130-131 */ 569 504 }; 570 505 static const unsigned port_range2_pins[] = { 571 506 102, 103, 104, 105, 106, 107, 108, 109, /* PORT14x */ 572 507 }; 573 - static const unsigned port_range2_muxvals[] = { 508 + static const int port_range2_muxvals[] = { 574 509 15, 15, 15, 15, 15, 15, 15, 15, /* PORT14x */ 575 510 }; 576 511 static const unsigned port_range3_pins[] = { 577 512 23, /* PORT166 */ 578 513 }; 579 - static const unsigned port_range3_muxvals[] = { 514 + static const int port_range3_muxvals[] = { 580 515 15, /* PORT166 */ 581 516 }; 582 517 static const unsigned xirq_range0_pins[] = { 583 518 128, 129, 130, 131, 132, 133, 134, 135, /* XIRQ0-7 */ 584 519 82, 87, 88, 50, 51, /* XIRQ8-12 */ 585 520 }; 586 - static const unsigned xirq_range0_muxvals[] = { 521 + static const int xirq_range0_muxvals[] = { 587 522 0, 0, 0, 0, 0, 0, 0, 0, /* XIRQ0-7 */ 588 523 14, 14, 14, 14, 14, /* XIRQ8-12 */ 589 524 }; 590 525 static const unsigned xirq_range1_pins[] = { 591 526 52, 58, /* XIRQ14-15 */ 592 527 }; 593 - static const unsigned xirq_range1_muxvals[] = { 528 + static const int xirq_range1_muxvals[] = { 594 529 14, 14, /* XIRQ14-15 */ 595 530 }; 596 531 597 - static const struct uniphier_pinctrl_group ph1_sld8_groups[] = { 532 + static const struct uniphier_pinctrl_group uniphier_sld8_groups[] = { 598 533 UNIPHIER_PINCTRL_GROUP(emmc), 599 534 UNIPHIER_PINCTRL_GROUP(emmc_dat8), 535 + UNIPHIER_PINCTRL_GROUP(ether_mii), 536 + UNIPHIER_PINCTRL_GROUP(ether_rmii), 600 537 UNIPHIER_PINCTRL_GROUP(i2c0), 601 538 UNIPHIER_PINCTRL_GROUP(i2c1), 602 539 UNIPHIER_PINCTRL_GROUP(i2c2), ··· 606 539 UNIPHIER_PINCTRL_GROUP(nand), 607 540 UNIPHIER_PINCTRL_GROUP(nand_cs1), 608 541 UNIPHIER_PINCTRL_GROUP(sd), 542 + UNIPHIER_PINCTRL_GROUP(system_bus), 543 + UNIPHIER_PINCTRL_GROUP(system_bus_cs1), 544 + UNIPHIER_PINCTRL_GROUP(system_bus_cs2), 545 + UNIPHIER_PINCTRL_GROUP(system_bus_cs3), 546 + UNIPHIER_PINCTRL_GROUP(system_bus_cs4), 547 + UNIPHIER_PINCTRL_GROUP(system_bus_cs5), 609 548 UNIPHIER_PINCTRL_GROUP(uart0), 610 549 UNIPHIER_PINCTRL_GROUP(uart1), 611 550 UNIPHIER_PINCTRL_GROUP(uart2), ··· 755 682 }; 756 683 757 684 static const char * const emmc_groups[] = {"emmc", "emmc_dat8"}; 685 + static const char * const ether_mii_groups[] = {"ether_mii"}; 686 + static const char * const ether_rmii_groups[] = {"ether_rmii"}; 758 687 static const char * const i2c0_groups[] = {"i2c0"}; 759 688 static const char * const i2c1_groups[] = {"i2c1"}; 760 689 static const char * const i2c2_groups[] = {"i2c2"}; 761 690 static const char * const i2c3_groups[] = {"i2c3"}; 762 691 static const char * const nand_groups[] = {"nand", "nand_cs1"}; 763 692 static const char * const sd_groups[] = {"sd"}; 693 + static const char * const system_bus_groups[] = {"system_bus", 694 + "system_bus_cs1", 695 + "system_bus_cs2", 696 + "system_bus_cs3", 697 + "system_bus_cs4", 698 + "system_bus_cs5"}; 764 699 static const char * const uart0_groups[] = {"uart0"}; 765 700 static const char * const uart1_groups[] = {"uart1"}; 766 701 static const char * const uart2_groups[] = {"uart2"}; ··· 817 736 "xirq12", /* none*/ "xirq14", "xirq15", 818 737 }; 819 738 820 - static const struct uniphier_pinmux_function ph1_sld8_functions[] = { 739 + static const struct uniphier_pinmux_function uniphier_sld8_functions[] = { 821 740 UNIPHIER_PINMUX_FUNCTION(emmc), 741 + UNIPHIER_PINMUX_FUNCTION(ether_mii), 742 + UNIPHIER_PINMUX_FUNCTION(ether_rmii), 822 743 UNIPHIER_PINMUX_FUNCTION(i2c0), 823 744 UNIPHIER_PINMUX_FUNCTION(i2c1), 824 745 UNIPHIER_PINMUX_FUNCTION(i2c2), 825 746 UNIPHIER_PINMUX_FUNCTION(i2c3), 826 747 UNIPHIER_PINMUX_FUNCTION(nand), 827 748 UNIPHIER_PINMUX_FUNCTION(sd), 749 + UNIPHIER_PINMUX_FUNCTION(system_bus), 828 750 UNIPHIER_PINMUX_FUNCTION(uart0), 829 751 UNIPHIER_PINMUX_FUNCTION(uart1), 830 752 UNIPHIER_PINMUX_FUNCTION(uart2), ··· 839 755 UNIPHIER_PINMUX_FUNCTION(xirq), 840 756 }; 841 757 842 - static struct uniphier_pinctrl_socdata ph1_sld8_pindata = { 843 - .groups = ph1_sld8_groups, 844 - .groups_count = ARRAY_SIZE(ph1_sld8_groups), 845 - .functions = ph1_sld8_functions, 846 - .functions_count = ARRAY_SIZE(ph1_sld8_functions), 847 - .mux_bits = 8, 848 - .reg_stride = 4, 849 - .load_pinctrl = false, 758 + static struct uniphier_pinctrl_socdata uniphier_sld8_pindata = { 759 + .pins = uniphier_sld8_pins, 760 + .npins = ARRAY_SIZE(uniphier_sld8_pins), 761 + .groups = uniphier_sld8_groups, 762 + .groups_count = ARRAY_SIZE(uniphier_sld8_groups), 763 + .functions = uniphier_sld8_functions, 764 + .functions_count = ARRAY_SIZE(uniphier_sld8_functions), 765 + .caps = 0, 850 766 }; 851 767 852 - static struct pinctrl_desc ph1_sld8_pinctrl_desc = { 853 - .name = DRIVER_NAME, 854 - .pins = ph1_sld8_pins, 855 - .npins = ARRAY_SIZE(ph1_sld8_pins), 856 - .owner = THIS_MODULE, 857 - }; 858 - 859 - static int ph1_sld8_pinctrl_probe(struct platform_device *pdev) 768 + static int uniphier_sld8_pinctrl_probe(struct platform_device *pdev) 860 769 { 861 - return uniphier_pinctrl_probe(pdev, &ph1_sld8_pinctrl_desc, 862 - &ph1_sld8_pindata); 770 + return uniphier_pinctrl_probe(pdev, &uniphier_sld8_pindata); 863 771 } 864 772 865 - static const struct of_device_id ph1_sld8_pinctrl_match[] = { 773 + static const struct of_device_id uniphier_sld8_pinctrl_match[] = { 774 + { .compatible = "socionext,uniphier-sld8-pinctrl" }, 866 775 { .compatible = "socionext,ph1-sld8-pinctrl" }, 867 776 { /* sentinel */ } 868 777 }; 869 - MODULE_DEVICE_TABLE(of, ph1_sld8_pinctrl_match); 778 + MODULE_DEVICE_TABLE(of, uniphier_sld8_pinctrl_match); 870 779 871 - static struct platform_driver ph1_sld8_pinctrl_driver = { 872 - .probe = ph1_sld8_pinctrl_probe, 780 + static struct platform_driver uniphier_sld8_pinctrl_driver = { 781 + .probe = uniphier_sld8_pinctrl_probe, 873 782 .driver = { 874 - .name = DRIVER_NAME, 875 - .of_match_table = ph1_sld8_pinctrl_match, 783 + .name = "uniphier-sld8-pinctrl", 784 + .of_match_table = uniphier_sld8_pinctrl_match, 876 785 }, 877 786 }; 878 - module_platform_driver(ph1_sld8_pinctrl_driver); 787 + module_platform_driver(uniphier_sld8_pinctrl_driver); 879 788 880 789 MODULE_AUTHOR("Masahiro Yamada <yamada.masahiro@socionext.com>"); 881 790 MODULE_DESCRIPTION("UniPhier PH1-sLD8 pinctrl driver");
+31 -28
drivers/pinctrl/uniphier/pinctrl-uniphier.h
··· 15 15 #ifndef __PINCTRL_UNIPHIER_H__ 16 16 #define __PINCTRL_UNIPHIER_H__ 17 17 18 + #include <linux/bitops.h> 18 19 #include <linux/bug.h> 19 20 #include <linux/kernel.h> 20 21 #include <linux/types.h> 22 + 23 + struct platform_device; 21 24 22 25 #define UNIPHIER_PINCTRL_PINMUX_BASE 0x0 23 26 #define UNIPHIER_PINCTRL_LOAD_PINMUX 0x700 24 27 #define UNIPHIER_PINCTRL_DRVCTRL_BASE 0x800 25 28 #define UNIPHIER_PINCTRL_DRV2CTRL_BASE 0x900 29 + #define UNIPHIER_PINCTRL_DRV3CTRL_BASE 0x980 26 30 #define UNIPHIER_PINCTRL_PUPDCTRL_BASE 0xa00 27 31 #define UNIPHIER_PINCTRL_IECTRL 0xd00 28 32 ··· 43 39 #define UNIPHIER_PIN_DRVCTRL_MASK ((1UL << (UNIPHIER_PIN_DRVCTRL_BITS)) \ 44 40 - 1) 45 41 46 - /* supported drive strength (mA) */ 47 - #define UNIPHIER_PIN_DRV_STR_SHIFT ((UNIPHIER_PIN_DRVCTRL_SHIFT) + \ 42 + /* drive control type */ 43 + #define UNIPHIER_PIN_DRV_TYPE_SHIFT ((UNIPHIER_PIN_DRVCTRL_SHIFT) + \ 48 44 (UNIPHIER_PIN_DRVCTRL_BITS)) 49 - #define UNIPHIER_PIN_DRV_STR_BITS 3 50 - #define UNIPHIER_PIN_DRV_STR_MASK ((1UL << (UNIPHIER_PIN_DRV_STR_BITS)) \ 45 + #define UNIPHIER_PIN_DRV_TYPE_BITS 3 46 + #define UNIPHIER_PIN_DRV_TYPE_MASK ((1UL << (UNIPHIER_PIN_DRV_TYPE_BITS)) \ 51 47 - 1) 52 48 53 49 /* pull-up / pull-down register number */ 54 - #define UNIPHIER_PIN_PUPDCTRL_SHIFT ((UNIPHIER_PIN_DRV_STR_SHIFT) + \ 55 - (UNIPHIER_PIN_DRV_STR_BITS)) 50 + #define UNIPHIER_PIN_PUPDCTRL_SHIFT ((UNIPHIER_PIN_DRV_TYPE_SHIFT) + \ 51 + (UNIPHIER_PIN_DRV_TYPE_BITS)) 56 52 #define UNIPHIER_PIN_PUPDCTRL_BITS 9 57 53 #define UNIPHIER_PIN_PUPDCTRL_MASK ((1UL << (UNIPHIER_PIN_PUPDCTRL_BITS))\ 58 54 - 1) ··· 70 66 71 67 #define UNIPHIER_PIN_IECTRL_NONE (UNIPHIER_PIN_IECTRL_MASK) 72 68 73 - /* selectable drive strength */ 74 - enum uniphier_pin_drv_str { 75 - UNIPHIER_PIN_DRV_4_8, /* 2 level control: 4/8 mA */ 76 - UNIPHIER_PIN_DRV_8_12_16_20, /* 4 level control: 8/12/16/20 mA */ 77 - UNIPHIER_PIN_DRV_FIXED_4, /* fixed to 4mA */ 78 - UNIPHIER_PIN_DRV_FIXED_5, /* fixed to 5mA */ 79 - UNIPHIER_PIN_DRV_FIXED_8, /* fixed to 8mA */ 69 + /* drive control type */ 70 + enum uniphier_pin_drv_type { 71 + UNIPHIER_PIN_DRV_1BIT, /* 2 level control: 4/8 mA */ 72 + UNIPHIER_PIN_DRV_2BIT, /* 4 level control: 8/12/16/20 mA */ 73 + UNIPHIER_PIN_DRV_3BIT, /* 8 level control: 4/5/7/9/11/12/14/16 mA */ 74 + UNIPHIER_PIN_DRV_FIXED4, /* fixed to 4mA */ 75 + UNIPHIER_PIN_DRV_FIXED5, /* fixed to 5mA */ 76 + UNIPHIER_PIN_DRV_FIXED8, /* fixed to 8mA */ 80 77 UNIPHIER_PIN_DRV_NONE, /* no support (input only pin) */ 81 78 }; 82 79 ··· 94 89 (((x) & (UNIPHIER_PIN_IECTRL_MASK)) << (UNIPHIER_PIN_IECTRL_SHIFT)) 95 90 #define UNIPHIER_PIN_DRVCTRL(x) \ 96 91 (((x) & (UNIPHIER_PIN_DRVCTRL_MASK)) << (UNIPHIER_PIN_DRVCTRL_SHIFT)) 97 - #define UNIPHIER_PIN_DRV_STR(x) \ 98 - (((x) & (UNIPHIER_PIN_DRV_STR_MASK)) << (UNIPHIER_PIN_DRV_STR_SHIFT)) 92 + #define UNIPHIER_PIN_DRV_TYPE(x) \ 93 + (((x) & (UNIPHIER_PIN_DRV_TYPE_MASK)) << (UNIPHIER_PIN_DRV_TYPE_SHIFT)) 99 94 #define UNIPHIER_PIN_PUPDCTRL(x) \ 100 95 (((x) & (UNIPHIER_PIN_PUPDCTRL_MASK)) << (UNIPHIER_PIN_PUPDCTRL_SHIFT)) 101 96 #define UNIPHIER_PIN_PULL_DIR(x) \ 102 97 (((x) & (UNIPHIER_PIN_PULL_DIR_MASK)) << (UNIPHIER_PIN_PULL_DIR_SHIFT)) 103 98 104 - #define UNIPHIER_PIN_ATTR_PACKED(iectrl, drvctrl, drv_str, pupdctrl, pull_dir)\ 99 + #define UNIPHIER_PIN_ATTR_PACKED(iectrl, drvctrl, drv_type, pupdctrl, pull_dir)\ 105 100 (UNIPHIER_PIN_IECTRL(iectrl) | \ 106 101 UNIPHIER_PIN_DRVCTRL(drvctrl) | \ 107 - UNIPHIER_PIN_DRV_STR(drv_str) | \ 102 + UNIPHIER_PIN_DRV_TYPE(drv_type) | \ 108 103 UNIPHIER_PIN_PUPDCTRL(pupdctrl) | \ 109 104 UNIPHIER_PIN_PULL_DIR(pull_dir)) 110 105 ··· 120 115 UNIPHIER_PIN_DRVCTRL_MASK; 121 116 } 122 117 123 - static inline unsigned int uniphier_pin_get_drv_str(void *drv_data) 118 + static inline unsigned int uniphier_pin_get_drv_type(void *drv_data) 124 119 { 125 - return ((unsigned long)drv_data >> UNIPHIER_PIN_DRV_STR_SHIFT) & 126 - UNIPHIER_PIN_DRV_STR_MASK; 120 + return ((unsigned long)drv_data >> UNIPHIER_PIN_DRV_TYPE_SHIFT) & 121 + UNIPHIER_PIN_DRV_TYPE_MASK; 127 122 } 128 123 129 124 static inline unsigned int uniphier_pin_get_pupdctrl(void *drv_data) ··· 148 143 const char *name; 149 144 const unsigned *pins; 150 145 unsigned num_pins; 151 - const unsigned *muxvals; 146 + const int *muxvals; 152 147 enum uniphier_pinmux_gpio_range_type range_type; 153 148 }; 154 149 ··· 159 154 }; 160 155 161 156 struct uniphier_pinctrl_socdata { 157 + const struct pinctrl_pin_desc *pins; 158 + unsigned int npins; 162 159 const struct uniphier_pinctrl_group *groups; 163 160 int groups_count; 164 161 const struct uniphier_pinmux_function *functions; 165 162 int functions_count; 166 - unsigned mux_bits; 167 - unsigned reg_stride; 168 - bool load_pinctrl; 163 + unsigned int caps; 164 + #define UNIPHIER_PINCTRL_CAPS_PERPIN_IECTRL BIT(1) 165 + #define UNIPHIER_PINCTRL_CAPS_DBGMUX_SEPARATE BIT(0) 169 166 }; 170 167 171 168 #define UNIPHIER_PINCTRL_PIN(a, b, c, d, e, f, g) \ ··· 212 205 .num_groups = ARRAY_SIZE(func##_groups), \ 213 206 } 214 207 215 - struct platform_device; 216 - struct pinctrl_desc; 217 - 218 208 int uniphier_pinctrl_probe(struct platform_device *pdev, 219 - struct pinctrl_desc *desc, 220 209 struct uniphier_pinctrl_socdata *socdata); 221 210 222 211 #endif /* __PINCTRL_UNIPHIER_H__ */
+1324
include/dt-bindings/pinctrl/stm32f746-pinfunc.h
··· 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 */
+2
include/linux/pinctrl/pinconf-generic.h
··· 175 175 int pinconf_generic_dt_node_to_map(struct pinctrl_dev *pctldev, 176 176 struct device_node *np_config, struct pinctrl_map **map, 177 177 unsigned *num_maps, enum pinctrl_map_type type); 178 + void pinconf_generic_dt_free_map(struct pinctrl_dev *pctldev, 179 + struct pinctrl_map *map, unsigned num_maps); 178 180 179 181 static inline int pinconf_generic_dt_node_to_map_group( 180 182 struct pinctrl_dev *pctldev, struct device_node *np_config,