pinctrl: Device tree bindings for Qualcomm PMIC MPP block
authorIvan T. Ivanov <iivanov@mm-sol.com>
Wed, 22 Oct 2014 09:58:45 +0000 (12:58 +0300)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 29 Oct 2014 08:28:36 +0000 (09:28 +0100)
DeviceTree binding documentation for Qualcomm SPMI PMIC MPP
pinctrl drivers.

Signed-off-by: Ivan T. Ivanov <iivanov@mm-sol.com>
Acked-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt [new file with mode: 0644]
include/dt-bindings/pinctrl/qcom,pmic-mpp.h [new file with mode: 0644]

diff --git a/Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt b/Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.txt
new file mode 100644 (file)
index 0000000..854774b
--- /dev/null
@@ -0,0 +1,162 @@
+Qualcomm PMIC Multi-Purpose Pin (MPP) block
+
+This binding describes the MPP block(s) found in the 8xxx series
+of PMIC's from Qualcomm.
+
+- compatible:
+       Usage: required
+       Value type: <string>
+       Definition: Should contain one of:
+                   "qcom,pm8841-mpp",
+                   "qcom,pm8941-mpp",
+                   "qcom,pma8084-mpp",
+
+- reg:
+       Usage: required
+       Value type: <prop-encoded-array>
+       Definition: Register base of the MPP block and length.
+
+- interrupts:
+       Usage: required
+       Value type: <prop-encoded-array>
+       Definition: Must contain an array of encoded interrupt specifiers for
+                   each available MPP
+
+- gpio-controller:
+       Usage: required
+       Value type: <none>
+       Definition: Mark the device node as a GPIO controller
+
+- #gpio-cells:
+       Usage: required
+       Value type: <u32>
+       Definition: Must be 2;
+                   the first cell will be used to define MPP number and the
+                   second denotes the flags for this MPP
+
+Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
+a general description of GPIO and interrupt bindings.
+
+Please refer to pinctrl-bindings.txt in this directory for details of the
+common pinctrl bindings used by client devices, including the meaning of the
+phrase "pin configuration node".
+
+The pin configuration nodes act as a container for an arbitrary number of
+subnodes. Each of these subnodes represents some desired configuration for a
+pin or a list of pins. This configuration can include the
+mux function to select on those pin(s), and various pin configuration
+parameters, as listed below.
+
+SUBNODES:
+
+The name of each subnode is not important; all subnodes should be enumerated
+and processed purely based on their content.
+
+Each subnode only affects those parameters that are explicitly listed. In
+other words, a subnode that lists a mux function but no pin configuration
+parameters implies no information about any pin configuration parameters.
+Similarly, a pin subnode that describes a pullup parameter implies no
+information about e.g. the mux function.
+
+The following generic properties as defined in pinctrl-bindings.txt are valid
+to specify in a pin configuration subnode:
+
+- pins:
+       Usage: required
+       Value type: <string-array>
+       Definition: List of MPP pins affected by the properties specified in
+                   this subnode.  Valid pins are:
+                   mpp1-mpp4 for pm8841
+                   mpp1-mpp8 for pm8941
+                   mpp1-mpp4 for pma8084
+
+- function:
+       Usage: required
+       Value type: <string>
+       Definition: Specify the alternative function to be configured for the
+                   specified pins.  Valid values are:
+                   "normal",
+                   "paired",
+                   "dtest1",
+                   "dtest2",
+                   "dtest3",
+                   "dtest4"
+
+- bias-disable:
+       Usage: optional
+       Value type: <none>
+       Definition: The specified pins should be configured as no pull.
+
+- bias-pull-up:
+       Usage: optional
+       Value type: <u32>
+       Definition: The specified pins should be configured as pull up.
+                   Valid values are 600, 10000 and 30000 in bidirectional mode
+                   only, i.e. when operating in qcom,analog-mode and input and
+                   outputs are enabled. The hardware ignores the configuration
+                   when operating in other modes.
+
+- bias-high-impedance:
+       Usage: optional
+       Value type: <none>
+       Definition: The specified pins will put in high-Z mode and disabled.
+
+- input-enable:
+       Usage: optional
+       Value type: <none>
+       Definition: The specified pins are put in input mode, i.e. their input
+                   buffer is enabled
+
+- output-high:
+       Usage: optional
+       Value type: <none>
+       Definition: The specified pins are configured in output mode, driven
+                   high.
+
+- output-low:
+       Usage: optional
+       Value type: <none>
+       Definition: The specified pins are configured in output mode, driven
+                   low.
+
+- power-source:
+       Usage: optional
+       Value type: <u32>
+       Definition: Selects the power source for the specified pins. Valid power
+                   sources are defined in <dt-bindings/pinctrl/qcom,pmic-mpp.h>
+
+- qcom,analog-mode:
+       Usage: optional
+       Value type: <none>
+       Definition: Selects Analog mode of operation: combined with input-enable
+                   and/or output-high, output-low MPP could operate as
+                   Bidirectional Logic, Analog Input, Analog Output.
+
+- qcom,amux-route:
+       Usage: optional
+       Value type: <u32>
+       Definition: Selects the source for analog input. Valid values are
+                   defined in <dt-bindings/pinctrl/qcom,pmic-mpp.h>
+                   PMIC_MPP_AMUX_ROUTE_CH5, PMIC_MPP_AMUX_ROUTE_CH6...
+
+Example:
+
+       mpps@a000 {
+               compatible = "qcom,pm8841-mpp";
+               reg = <0xa000>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupts = <4 0xa0 0 0>, <4 0xa1 0 0>, <4 0xa2 0 0>, <4 0xa3 0 0>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pm8841_default>;
+
+               pm8841_default: default {
+                       gpio {
+                               pins = "mpp1", "mpp2", "mpp3", "mpp4";
+                               function = "normal";
+                               input-enable;
+                               power-source = <PM8841_MPP_S3>;
+                       };
+               };
+       };
diff --git a/include/dt-bindings/pinctrl/qcom,pmic-mpp.h b/include/dt-bindings/pinctrl/qcom,pmic-mpp.h
new file mode 100644 (file)
index 0000000..d2c7dab
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * This header provides constants for the Qualcomm PMIC's
+ * Multi-Purpose Pin binding.
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_QCOM_PMIC_MPP_H
+#define _DT_BINDINGS_PINCTRL_QCOM_PMIC_MPP_H
+
+/* power-source */
+#define PM8841_MPP_VPH                 0
+#define PM8841_MPP_S3                  2
+
+#define PM8941_MPP_VPH                 0
+#define PM8941_MPP_L1                  1
+#define PM8941_MPP_S3                  2
+#define PM8941_MPP_L6                  3
+
+#define PMA8084_MPP_VPH                        0
+#define PMA8084_MPP_L1                 1
+#define PMA8084_MPP_S4                 2
+#define PMA8084_MPP_L6                 3
+
+/*
+ * Analog Input - Set the source for analog input.
+ * To be used with "qcom,amux-route" property
+ */
+#define PMIC_MPP_AMUX_ROUTE_CH5                0
+#define PMIC_MPP_AMUX_ROUTE_CH6                1
+#define PMIC_MPP_AMUX_ROUTE_CH7                2
+#define PMIC_MPP_AMUX_ROUTE_CH8                3
+#define PMIC_MPP_AMUX_ROUTE_ABUS1      4
+#define PMIC_MPP_AMUX_ROUTE_ABUS2      5
+#define PMIC_MPP_AMUX_ROUTE_ABUS3      6
+#define PMIC_MPP_AMUX_ROUTE_ABUS4      7
+
+/* To be used with "function" */
+#define PMIC_MPP_FUNC_NORMAL           "normal"
+#define PMIC_MPP_FUNC_PAIRED           "paired"
+#define PMIC_MPP_FUNC_DTEST1           "dtest1"
+#define PMIC_MPP_FUNC_DTEST2           "dtest2"
+#define PMIC_MPP_FUNC_DTEST3           "dtest3"
+#define PMIC_MPP_FUNC_DTEST4           "dtest4"
+
+#endif