Skip to content

Commit

Permalink
Merge tag 'pinctrl-v4.8-1' of git://git.kernel.org/pub/scm/linux/kern…
Browse files Browse the repository at this point in the history
…el/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
  ...
  • Loading branch information
torvalds committed Jul 29, 2016
2 parents 1c88e19 + 9573e79 commit d94ba9e
Show file tree
Hide file tree
Showing 119 changed files with 12,550 additions and 2,698 deletions.
47 changes: 47 additions & 0 deletions Documentation/devicetree/bindings/gpio/gpio_oxnas.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
* Oxford Semiconductor OXNAS SoC GPIO Controller

Please refer to gpio.txt for generic information regarding GPIO bindings.

Required properties:
- compatible: "oxsemi,ox810se-gpio"
- reg: Base address and length for the device.
- interrupts: The port interrupt shared by all pins.
- gpio-controller: Marks the port as GPIO controller.
- #gpio-cells: Two. The first cell is the pin number and
the second cell is used to specify the gpio polarity as defined in
defined in <dt-bindings/gpio/gpio.h>:
0 = GPIO_ACTIVE_HIGH
1 = GPIO_ACTIVE_LOW
- interrupt-controller: Marks the device node as an interrupt controller.
- #interrupt-cells: Two. The first cell is the GPIO number and second cell
is used to specify the trigger type as defined in
<dt-bindings/interrupt-controller/irq.h>:
IRQ_TYPE_EDGE_RISING
IRQ_TYPE_EDGE_FALLING
IRQ_TYPE_EDGE_BOTH
- gpio-ranges: Interaction with the PINCTRL subsystem, it also specifies the
gpio base and count, should be in the format of numeric-gpio-range as
specified in the gpio.txt file.

Example:

gpio0: gpio@0 {
compatible = "oxsemi,ox810se-gpio";
reg = <0x000000 0x100000>;
interrupts = <21>;
#gpio-cells = <2>;
gpio-controller;
interrupt-controller;
#interrupt-cells = <2>;
gpio-ranges = <&pinctrl 0 0 32>;
};

keys {
...

button-esc {
label = "ESC";
linux,code = <1>;
gpios = <&gpio0 12 0>;
};
};
18 changes: 16 additions & 2 deletions Documentation/devicetree/bindings/pinctrl/brcm,iproc-gpio.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,22 @@ Broadcom iProc GPIO/PINCONF Controller
Required properties:

- compatible:
Must be "brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio",
"brcm,cygnus-crmu-gpio" or "brcm,iproc-gpio"
"brcm,iproc-gpio" for the generic iProc based GPIO controller IP that
supports full-featured pinctrl and GPIO functions used in various iProc
based SoCs

May contain an SoC-specific compatibility string to accommodate any
SoC-specific features

"brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", or
"brcm,cygnus-crmu-gpio" for Cygnus SoCs

"brcm,iproc-nsp-gpio" for the iProc NSP SoC that has drive strength support
disabled

"brcm,iproc-stingray-gpio" for the iProc Stingray SoC that has the general
pinctrl support completely disabled in this IP block. In Stingray, a
different IP block is used to handle pinctrl related functions

- reg:
Define the base and range of the I/O address space that contains SoC
Expand Down
79 changes: 79 additions & 0 deletions Documentation/devicetree/bindings/pinctrl/brcm,nsp-pinmux.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
Broadcom NSP (Northstar plus) IOMUX Controller

The NSP IOMUX controller supports group based mux configuration. In
addition, certain pins can be muxed to GPIO function individually.

Required properties:
- compatible:
Must be "brcm,nsp-pinmux"

- reg:
Should contain the register physical address and length for each of
GPIO_CONTROL0, GP_AUX_SEL and IPROC_CONFIG IOMUX registers

Properties in subnodes:
- function:
The mux function to select

- groups:
The list of groups to select with a given function

For more details, refer to
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt

For example:

pinmux: pinmux@1803f1c0 {
compatible = "brcm,nsp-pinmux";
reg = <0x1803f1c0 0x04>,
<0x18030028 0x04>,
<0x1803f408 0x04>;

pinctrl-names = "default";
pinctrl-0 = <&pwm &gpio_b &nand_sel>;

pwm: pwm {
function = "pwm";
groups = "pwm0_grp", "pwm1_grp";
};

gpio_b: gpio_b {
function = "gpio_b";
groups = "gpio_b_0_grp", "gpio_b_1_grp";
};

nand_sel: nand_sel {
function = "nand";
groups = "nand_grp";
};
};

List of supported functions and groups in Northstar Plus:

"spi": "spi_grp"

"i2c": "i2c_grp"

"mdio": "mdio_grp"

"pwm": "pwm0_grp", "pwm1_grp", "pwm2_grp", "pwm3_grp"

"gpio_b": "gpio_b_0_grp", "gpio_b_1_grp", "gpio_b_2_grp", "gpio_b_3_grp"

"uart1": "uart1_grp"

"uart2": "uart2_grp"

"synce": "synce_grp"

"sata_led_grps": "sata0_led_grp", "sata1_led_grp"

"xtal_out": "xtal_out_grp"

"sdio": "sdio_pwr_grp", "sdio_1p8v_grp"

"switch_led": "switch_p05_led0_grp", "switch_p05_led1_grp"

"nand": "nand_grp"

"emmc": "emmc_grp"
57 changes: 57 additions & 0 deletions Documentation/devicetree/bindings/pinctrl/oxnas,pinctrl.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
* Oxford Semiconductor OXNAS SoC Family Pin Controller

Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and
../interrupt-controller/interrupts.txt for generic information regarding
pin controller, GPIO, and interrupt bindings.

OXNAS 'pin configuration node' is a node of a group of pins which can be
used for a specific device or function. This node represents configurations of
pins, optional function, and optional mux related configuration.

Required properties for pin controller node:
- compatible: "oxsemi,ox810se-pinctrl"
- oxsemi,sys-ctrl: a phandle to the system controller syscon node

Required properties for pin configuration sub-nodes:
- pins: List of pins to which the configuration applies.

Optional properties for pin configuration sub-nodes:
----------------------------------------------------
- function: Mux function for the specified pins.
- bias-pull-up: Enable weak pull-up.

Example:

pinctrl: pinctrl {
compatible = "oxsemi,ox810se-pinctrl";

/* Regmap for sys registers */
oxsemi,sys-ctrl = <&sys>;

pinctrl_uart2: pinctrl_uart2 {
uart2a {
pins = "gpio31";
function = "fct3";
};
uart2b {
pins = "gpio32";
function = "fct3";
};
};
};

uart2: serial@900000 {
compatible = "ns16550a";
reg = <0x900000 0x100000>;
clocks = <&sysclk>;
interrupts = <29>;
reg-shift = <0>;
fifo-size = <16>;
reg-io-width = <1>;
current-speed = <115200>;
no-loopback-test;
status = "disabled";
resets = <&reset 22>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart2>;
};
127 changes: 127 additions & 0 deletions Documentation/devicetree/bindings/pinctrl/pinctrl-max77620.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
Pincontrol driver for MAX77620 Power management IC from Maxim Semiconductor.

Device has 8 GPIO pins which can be configured as GPIO as well as the
special IO functions.

Please refer file <devicetree/bindings/pinctrl/pinctrl-bindings.txt>
for details of the common pinctrl bindings used by client devices,
including the meaning of the phrase "pin configuration node".

Optional Pinmux properties:
--------------------------
Following properties are required if default setting of pins are required
at boot.
- pinctrl-names: A pinctrl state named per <pinctrl-binding.txt>.
- pinctrl[0...n]: Properties to contain the phandle for pinctrl states per
<pinctrl-binding.txt>.

The pin configurations are defined as child of the pinctrl states node. Each
sub-node have following properties:

Required properties:
------------------
- pins: List of pins. Valid values of pins properties are:
gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7.

Optional properties:
-------------------
Following are optional properties defined as pinmux DT binding document
<pinctrl-bindings.txt>. Absence of properties will leave the configuration
on default.
function,
drive-push-pull,
drive-open-drain,
bias-pull-up,
bias-pull-down.

Valid values for function properties are:
gpio, lpm-control-in, fps-out, 32k-out, sd0-dvs-in, sd1-dvs-in,
reference-out

Theres is also customised properties for the GPIO1, GPIO2 and GPIO3. These
customised properties are required to configure FPS configuration parameters
of these GPIOs. Please refer <devicetree/bindings/mfd/max77620.txt> for more
detail of Flexible Power Sequence (FPS).

- maxim,active-fps-source: FPS source for the GPIOs to get
enabled/disabled when system is in
active state. Valid values are:
- MAX77620_FPS_SRC_0,
FPS source is FPS0.
- MAX77620_FPS_SRC_1,
FPS source is FPS1
- MAX77620_FPS_SRC_2 and
FPS source is FPS2
- MAX77620_FPS_SRC_NONE.
GPIO is not controlled
by FPS events and it gets
enabled/disabled by register
access.
Absence of this property will leave
the FPS configuration register for that
GPIO to default configuration.

- maxim,active-fps-power-up-slot: Sequencing event slot number on which
the GPIO get enabled when
master FPS input event set to HIGH.
Valid values are 0 to 7.
This is applicable if FPS source is
selected as FPS0, FPS1 or FPS2.

- maxim,active-fps-power-down-slot: Sequencing event slot number on which
the GPIO get disabled when master
FPS input event set to LOW.
Valid values are 0 to 7.
This is applicable if FPS source is
selected as FPS0, FPS1 or FPS2.

- maxim,suspend-fps-source: This is same as property
"maxim,active-fps-source" but value
get configured when system enters in
to suspend state.

- maxim,suspend-fps-power-up-slot: This is same as property
"maxim,active-fps-power-up-slot" but
this value get configured into FPS
configuration register when system
enters into suspend.
This is applicable if suspend state
FPS source is selected as FPS0, FPS1 or

- maxim,suspend-fps-power-down-slot: This is same as property
"maxim,active-fps-power-down-slot" but
this value get configured into FPS
configuration register when system
enters into suspend.
This is applicable if suspend state
FPS source is selected as FPS0, FPS1 or
FPS2.

Example:
--------
#include <dt-bindings/mfd/max77620.h>
...
max77620@3c {

pinctrl-names = "default";
pinctrl-0 = <&spmic_default>;

spmic_default: pinmux@0 {
pin_gpio0 {
pins = "gpio0";
function = "gpio";
};

pin_gpio1 {
pins = "gpio1";
function = "fps-out";
maxim,active-fps-source = <MAX77620_FPS_SRC_0>;
};

pin_gpio2 {
pins = "gpio2";
function = "fps-out";
maxim,active-fps-source = <MAX77620_FPS_SRC_1>;
};
};
};
Loading

0 comments on commit d94ba9e

Please sign in to comment.